Vítejte na Elektro Bastlírně
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Upload · Profil · Zprávy · Hledat na fóru · Hledat v článcích

Dobrovolné příspěvky na provoz EB

Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Pocukávání servomotoru
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Poradna
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
doga



Založen: Mar 26, 2018
Příspěvky: 53
Bydliště: okr. Bruntál

PříspěvekZaslal: pá listopad 29 2019, 20:55    Předmět: Pocukávání servomotoru Citovat

Ahoj,
ovládám arduinem servomotorek a ten nahodile pocukává, polohu nemění, jen to v něm cukne.
Aplikace pojede na akumulátor a proto se snažím minimalizovat spotřebu.
Je toto chování u servomotoru normální?
Dík
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
misocko



Založen: Jun 26, 2009
Příspěvky: 875
Bydliště: Hlohovec (Sk)

PříspěvekZaslal: pá listopad 29 2019, 21:37    Předmět: Citovat

na zaklade coho ovladas? nemeni sa vstupna hodnota? hlavne ked ides cez analog tak to bude ono. pomoze kondenzator na analog pin alebo osciloskop
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pajosek2



Založen: Feb 24, 2007
Příspěvky: 4052
Bydliště: Zlínsko

PříspěvekZaslal: pá listopad 29 2019, 21:47    Předmět: Citovat

Servo neni typ motoru,ale typ pohonu. Může to byt klidne uhlikovy motor a stejně tak krokový motor. Takže o jaký motor se jedná
_________________
To,že někdo dělá věci jinak než by jsi je dělal Ty ještě neznamená,že to dělá špatně.

Nemám zájem o korekci pravopisu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
doga



Založen: Mar 26, 2018
Příspěvky: 53
Bydliště: okr. Bruntál

PříspěvekZaslal: pá listopad 29 2019, 23:36    Předmět: Citovat

Jedná se o analogový servomechanismus - modelářský. Ovládám to pomocí knihovny Servo, která by to měla ovládat délkou pulzu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Artaban001



Založen: Apr 01, 2004
Příspěvky: 7868
Bydliště: Pendrov

PříspěvekZaslal: pá listopad 29 2019, 23:45    Předmět: Citovat

Ahoj Dogo. Dáváš příliš málo informací. Servopohon bývá většinou zařízení, kde je nějaký motorek, který pohání nějaký akční člen, pak je tam něco, co snímá polohu akčního členu a posílá to zpět regulačnímu členu. Může se stát, že "zpětná vazba" v podobě snímání polohy akčního členu je příliš silná a proto se Ti to může rozkmitat. Taktéž to mohou způsobovat vůle v převodech, pokud není akční člen poháněn přímo. Pak ještě může nastat nežádoucí stav, kdy je zpětná vazba moc rychlá, nebo pomalá...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Celeron



Založen: Apr 02, 2011
Příspěvky: 10125
Bydliště: Nový Bydžov

PříspěvekZaslal: so listopad 30 2019, 0:31    Předmět: Citovat

Modelářský servo má přeci zpětnou vazbu přímo v sobě, poloha výstupní páky je přesně daná dýlkou řídícího pulzu v rozsahu cca 0,9-2 ms s opakováním každých cca 20 ms u analogových serv.
Zkus napsat jednoduchej prográmek, kterej by posílal na servo cca 1,2 ms počkat 30 sekund, pak 1,3 ms, zase pauzu a tak přidávat stále dokola do cca 1,9 ms aby do toho nemohlo nic jinýho z programu kecat. Jestli to servo bude v některý poloze cukat, tak bude zasviněnej zpětnovazební potenciometr v servu. U většiny jde vyčistit a promazat třeba Kontoxem.

_________________
Jirka

Proč mi nemůže všechno chodit hned ?!!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
doga



Založen: Mar 26, 2018
Příspěvky: 53
Bydliště: okr. Bruntál

PříspěvekZaslal: so listopad 30 2019, 0:49    Předmět: Citovat

Dík za vaši snahu,
už jsem vyzkoušel ukázkový program a funguje to jak má. V mém programu používám Tasker a tak jsem původní cyklus pro pozvolné otáčení předělal na přičítací podmínku, kterou volám Taskerem. Původní cyklus by mi blokoval tlačítka a display ale to už je do jiné části fóra. Ještě jednou dík
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
doga



Založen: Mar 26, 2018
Příspěvky: 53
Bydliště: okr. Bruntál

PříspěvekZaslal: po prosinec 02 2019, 21:27    Předmět: Citovat

Ahoj,
tak to dělá onewire s čidly Dalas. Čidla nemusí být ani připojeny, stačí doplnit kód a servopohon začne pocukávat.
Nějaký nápad?
Dík
kód:

#include <Tasker.h>
#include <OneWire.h>
#include <DallasTemperature.h>

Tasker tasker;


#define ONE_WIRE_BUS 11 //pin 13 sběrnice pro DS
OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices
DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature.
DeviceAddress inside1 = { 0x28, 0x80, 0x4E, 0xE9, 0x08, 0x00, 0x00, 0x40 };
DeviceAddress outside1 = { 0x28, 0x36, 0x66, 0x40, 0xA, 0x00, 0x00, 0x46 };

float Tin1 = 0;
float Tout1 = 0;

#include <Servo.h>     //zahrnutí knihovny pro ovládání servo motoru
Servo myservo;         //každý motor má svou instanci třídy Servo
int pos = 0;           //proměnná obsahující pozici motoru (úhel natočení)

void dvirka(int) {
    // Serial.println(pos);
    pos = 0;
     myservo.write(pos);
 }

void ctiSensor(int) {
Tin1 = sensors.getTempC (inside1);
Tout1 = sensors.getTempC (outside1);
}

void ctiTeplotu(int) {
    sensors.requestTemperatures();
    tasker.setTimeout(ctiSensor, 750);
    Serial.println(Tout1);
}

void setup() {

myservo.attach(12);   //tento motor je připojen na pin 9
Serial.begin(9600);
sensors.begin(); // Spuštění knihovny
sensors.setResolution(inside1, 12); // set the resolution to 10 bit (good enough?)
sensors.setResolution(outside1, 12);
   sensors.setWaitForConversion(false);
   
    tasker.setInterval(ctiTeplotu, 3000);
    tasker.setInterval(dvirka, 50);
    tasker.run();
 }

void loop(void)
{
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
p32



Založen: Jan 13, 2007
Příspěvky: 11166
Bydliště: Olomoucko

PříspěvekZaslal: po prosinec 02 2019, 21:30    Předmět: Citovat

Dával jsi to předtím jinam, ale teď je to zde. Když už tam něco vkládáš, tak to trošku porovnej. #include všechny za sebou atd. Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
misocko



Založen: Jun 26, 2009
Příspěvky: 875
Bydliště: Hlohovec (Sk)

PříspěvekZaslal: po prosinec 02 2019, 21:48    Předmět: Citovat

#define ONE_WIRE_BUS 11 //pin 13 sběrnice pro DS - tak 13 alebo 11?
myservo.attach(12); //tento motor je připojen na pin 9 - 12 alebo 9 ?

v loope nemas nic, takto ti to cuka?

kedze tomu vobec nerozumiem, napada ma iba "delay" v citani DS senzora, ked ti nebezi pin na riadenie serva a servo cukne - alebo je tento pin rieseny ako PWM a bezi furt?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
doga



Založen: Mar 26, 2018
Příspěvky: 53
Bydliště: okr. Bruntál

PříspěvekZaslal: po prosinec 02 2019, 23:34    Předmět: Citovat

Ahoj, nabyl jsem dojmu, že pokračování mého problému patří do jiné části fóra a admin mě vrátil zpět.
Omlouvám se za nepřesnosti v kódu, komenty jsou pouze informační ale pokusil jsem se to trochu učesat.

kód:
#include <Tasker.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Servo.h>     //zahrnutí knihovny pro ovládání servo motoru

Tasker tasker;

Servo myservo;         //každý motor má svou instanci třídy Servo

#define ONE_WIRE_BUS 11 //pin sběrnice pro DS
OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices
DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature.
DeviceAddress inside1 = { 0x28, 0x80, 0x4E, 0xE9, 0x08, 0x00, 0x00, 0x40 };
DeviceAddress outside1 = { 0x28, 0x36, 0x66, 0x40, 0xA, 0x00, 0x00, 0x46 };

float Tin1 = 0;
float Tout1 = 0;
int pos = 0;           //proměnná obsahující pozici motoru (úhel natočení)

void dvirka(int) {
    // Serial.println(pos);
    pos = 90;
     myservo.write(pos);
 }

void ctiSensor(int) {
Tin1 = sensors.getTempC (inside1);
Tout1 = sensors.getTempC (outside1);
}

void ctiTeplotu(int) {
    sensors.requestTemperatures();
    tasker.setTimeout(ctiSensor, 750);
    Serial.println(Tout1);
}

void setup() {
myservo.attach(12);   //tento motor je připojen na pin 12
Serial.begin(9600);
sensors.begin(); // Spuštění knihovny
sensors.setResolution(inside1, 12); // set the resolution to 10 bit (good enough?)
sensors.setResolution(outside1, 12);
sensors.setWaitForConversion(false);
   
    tasker.setInterval(ctiTeplotu, 3000);
    tasker.setInterval(dvirka, 50);
    tasker.run();
 }

void loop(void)
{
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
doga



Založen: Mar 26, 2018
Příspěvky: 53
Bydliště: okr. Bruntál

PříspěvekZaslal: út prosinec 03 2019, 0:37    Předmět: Citovat

misocko napsal(a):

kedze tomu vobec nerozumiem, napada ma iba "delay" v citani DS senzora, ked ti nebezi pin na riadenie serva a servo cukne - alebo je tento pin rieseny ako PWM a bezi furt?

servo jsem dal na 3 pin s PWM ale bohužel bezezměny.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
misocko



Založen: Jun 26, 2009
Příspěvky: 875
Bydliště: Hlohovec (Sk)

PříspěvekZaslal: út prosinec 03 2019, 19:04    Předmět: Citovat

len je otazne ako ho riadi servo kniznica , ci ako PWM a teda kmita nezavisle na behu zvysku programu alebo len proste kmita a ked procak prave nema cas , tak sa kmity predlzuju
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1253
Bydliště: Praha

PříspěvekZaslal: út prosinec 03 2019, 20:00    Předmět: Citovat

Pro jakou to máš desku ? Docela důležitý údaj ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
doga



Založen: Mar 26, 2018
Příspěvky: 53
Bydliště: okr. Bruntál

PříspěvekZaslal: st prosinec 04 2019, 0:20    Předmět: Citovat

Arduino nano, napájené přes VIN z 6v baterie. Servo napájeno přímo z baterie.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Poradna Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na adrese admin (zavináč) ebastlirna.cz


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.13 sekund