Autor |
Zpráva |
jkyy
|
Napsal: čtv 23.01.2014 15:59 |
|
Nováček serveru
|
|
Registrován: 26.4.2012 Příspěvky: 26 Bydliště: Teplice
|
potřebuji poradit jak arduinem řídit regulátor jedno jestli střídavý nebo stejnosměrný nebo jké pulzi ovládaj regulátory dopředu brzda spátečka
_________________ Blade 450 , Blade Nano CP ,HiMOTO buggy Z-3 (3250KW) , TROPHY 4,6 Truggy, CEN ME16 Rally 4WD
|
|
Nahoru |
|
|
|
|
|
Maxipes
|
Napsal: čtv 23.01.2014 16:19 |
|
Mazák
|
|
|
Registrován: 15.7.2007 Příspěvky: 1130 Bydliště: Praha 6, ČR Obrázky: 12
|
knihovnou pro servo, regulator i servo maji stejne signaly. Letecke regulatory: 1ms 0%, 1.5ms 50%, 2ms 100% Auto regulatory: 1ms -100% (zpatecka), 1.5ms 0%, 2ms 100% (vpred)
Na presnosti moc nezalezi, regulator si po spusteni zmeri pulz a ulozi ho jako minimalni hodnotu. Pulz pri zapnuti musi byt tak aby se netocil motor. Trizilovy signalovy kabel od regulatoru obvykle obsahuje 5V (BEC) napajeni na cervenem dratu, da se vyuzit pro napajeni arduina, ale pozor na zapojeni dvou zdroju zaroven.
_________________ T-Rex 600N Spirit, Tx Aurora.
|
|
Nahoru |
|
|
Drondys
|
Napsal: čtv 23.01.2014 16:28 |
|
Mazák
|
|
|
Registrován: 22.2.2010 Příspěvky: 11876 Bydliště: ČR Obrázky: 1
|
jkyy píše: potřebuji poradit jak arduinem řídit regulátor jedno jestli střídavý nebo stejnosměrný nebo jaké pulzi ovládaj regulátory dopředu brzda zpátečka Regulátory mají PWM vstup. PWM signál jsou impulzy generované s periodou cca 20 ms. Šířka impulsu se pohybuje v rozmezí od cca 1ms až do cca 2ms . Jednosměrné regulátory mají obvykle stop při šířce impulsu cca 1 ms a maximum při cca 2ms. Obousměrné regulátory mají obvykle stop při šířce impulsu cca 1,5ms, maximum vzad při šířce impulsu cca 1ms a maximum vpřed při cca 2ms. Signál se dá generovat třeba ve smyčce s použitím funkce delay() nebo lze využít připravenou knihovnu pro řízení RC serv, která je použitelná i pro řízení RC regulátorů. Pár článků ke generování PWM: Arduino: PWM info (základní informace)Arduino: Demo PWM Output (generování ve smyčce) Arduino: Servo library (knihovna pro řízení RC serv)
|
|
Nahoru |
|
|
jkyy
|
Napsal: čtv 23.01.2014 17:28 |
|
Nováček serveru
|
|
Registrován: 26.4.2012 Příspěvky: 26 Bydliště: Teplice
|
děkuji všem pomohlo to vyzkoušim auto ovládat wifi nebo bluetooth nejdřiv přes arduino a pak maprogramuji nějaký atmel DÍKY
_________________ Blade 450 , Blade Nano CP ,HiMOTO buggy Z-3 (3250KW) , TROPHY 4,6 Truggy, CEN ME16 Rally 4WD
|
|
Nahoru |
|
|
jkyy
|
Napsal: úte 01.07.2014 16:29 |
|
Nováček serveru
|
|
Registrován: 26.4.2012 Příspěvky: 26 Bydliště: Teplice
|
Asi se stala někde chyba servo se perfektně točilo sem a tam ale po připojení regulátoru se zezačátku motor netočil a pak hned šel na plno potom se sám zastavil a z regulátoru se začlo kouřit a je po něm prosim mohl by mi někdo poslat návod a program na ovládní obousměrného regulatoru (odskoušenej) děkuji učim se teprve programovat tak než zničim další regulátor arduino LEONARDO , DUE ,
_________________ Blade 450 , Blade Nano CP ,HiMOTO buggy Z-3 (3250KW) , TROPHY 4,6 Truggy, CEN ME16 Rally 4WD
|
|
Nahoru |
|
|
Drondys
|
Napsal: úte 01.07.2014 16:57 |
|
Mazák
|
|
|
Registrován: 22.2.2010 Příspěvky: 11876 Bydliště: ČR Obrázky: 1
|
jkyy píše: Asi se stala někde chyba servo se perfektně točilo sem a tam ale po připojení regulátoru se zezačátku motor netočil a pak hned šel na plno potom se sám zastavil a z regulátoru se začlo kouřit a je po něm... Uveď sem ten program co jsi použil. Dle mého názoru nebude problém v tom programu, ale spíš v tom, že se regulátor uvařil zátěží toho motoru tj. nebyl pro něj zřejmě vhodný případně mohlo dojít ke zkratu na straně vývodů z regulátoru do motoru nebo v motoru a nebo to byla jen shoda okolností a došlo k nějaké závadě v regulátoru zcela nezávisle na tom programu. Pro řízení regulátoru se používá stejný PWM signál jako pro servo. Pokud tedy fungovalo servo není důvod proč by neměl fungovat i regulátor. U obousměrného regulátoru je obvykle ve středu rozsahu tj. při impulsech o šířce cca 1,5ms neutrál a změnou šířky impulsů jedním (k 1ms) a druhým směrem (k 2ms) od středu (1,5ms) je řešen nárůst otáček motoru od stavu zastaveno do maxima jedním a druhým směrem otáčení. Pokud byla délka PWM impulsů zpočátku někde mimo střed (1,5 ms) tak regulátor nereagoval, protože to bylo mimo neutrál tj. byl tzv. uzamčen alias blokován ochranou, která je u regulátorů obvykle takto řešena tj. regulátor motor neroztočí pokud není nejprve plyn alias PWM signál v neutrálu což je u obousměrných obvykle střed tedy při šířce PWM impulsů cca 1,5 ms jak už jsem zmínil. Pak zřejmě došlo k nastavení šířky impulsů blíž k hranicí 1,5 ms a regulátor se tzv. odemknul a pak zřejmě skokově byla nastavena šířka impulsů někde směrem k jednomu či druhému maximu vůči středu, a proto se motor tak roztočil, ale regulátor zřejmě tu zátěž neunesl tj. motor měl buď přiliš velký odběr proudu a nebo došlo k nějakému svodu/zkratu na straně vývodů z regulátoru do motoru nebo v motoru. Velký odběr proudu by mohlo případně způsobit i nějaké mechanické brždění motoru.
|
|
Nahoru |
|
|
jkyy
|
Napsal: úte 01.07.2014 18:18 |
|
Nováček serveru
|
|
Registrován: 26.4.2012 Příspěvky: 26 Bydliště: Teplice
|
Použil jsem regulator i s motorem z auta, na kterém to jezdilo 140A ss jsou na něm spálený dva tranzistory. Kód: #include <Servo.h>
Servo mojeServo;
void setup() { mojeServo.attach(8); mojeServo.write(90); delay(5000); Serial.begin(9600);
}
void loop() { mojeServo.write(Serial.read()); // pomocí processingu posílám do arduina čísla od 0 do 180 delay(20); }
_________________ Blade 450 , Blade Nano CP ,HiMOTO buggy Z-3 (3250KW) , TROPHY 4,6 Truggy, CEN ME16 Rally 4WD
|
|
Nahoru |
|
|
Drondys
|
Napsal: stř 02.07.2014 13:59 |
|
Mazák
|
|
|
Registrován: 22.2.2010 Příspěvky: 11876 Bydliště: ČR Obrázky: 1
|
jkyy píše: Použil jsem regulator i s motorem z auta, na kterém to jezdilo 140A ss jsou na něm spálený dva tranzistory. Dle mého názoru problém není způsoben tím programem. Problém hledej jinde jak už jsem zmínil. Pokud se v tom nevyznáš tak bude zřejmě tak jako tak lepší se obrátit na někoho znalejšího ve tvém blízkém okolí kdo tomu víc rozumí a zvládne to rozchodit ve vztahu ke konkrétnímu hardware.
|
|
Nahoru |
|
|
dt
|
Napsal: stř 02.07.2014 17:03 |
|
Mecenáš serveru
|
|
|
Registrován: 22.3.2005 Příspěvky: 1151 Bydliště: Hlučín, CZ
|
Já se ještě vrátím tady k této konstrukci: jkyy píše: Kód: mojeServo.write(Serial.read()); // pomocí processingu posílám do arduina čísla od 0 do 180 Jsi si jistý, že tam skutečně posíláš čísla 0..180, tzn. znaky s ASCII kódem 0..180? Nesnažíš se tam třeba poslat číslo 100 jako text "100" a ještě k tomu nedej bože CRLF jako konec řádku?
|
|
Nahoru |
|
|
Drondys
|
Napsal: stř 02.07.2014 17:38 |
|
Mazák
|
|
|
Registrován: 22.2.2010 Příspěvky: 11876 Bydliště: ČR Obrázky: 1
|
dt píše: Já se ještě vrátím tady k této konstrukci:
// pomocí processingu posílám do arduina čísla od 0 do 180 mojeServo.write(Serial.read());
Jsi si jistý, že tam skutečně posíláš čísla 0..180, tzn. znaky s ASCII kódem 0..180? Nesnažíš se tam třeba poslat číslo 100 jako text "100" a ještě k tomu nedej bože CRLF jako konec řádku? Serial.read() vrací v návratové hodnotě typu int dekadickou hodnotu v rozmezí 0 až 255 odpovídající prvnímu načtenému bajtu z bafru sériového portu pokud je v bafru nějaký bajt dostupný. Pokud není dostupný žádný bajt pak vrací hodnotu -1. Pokud by tam poslal třeba text 100 zakončený CRLF tak by to postupně v jednotlivých průchodech funkce loop() nastavilo přes mojeServo.write hodnoty 49, 48, 48, 13 a 10 a následně pokud by ze sériového portu už nebyly čteny žádné bajty tak by to opakovaně nastavovalo hodnotu 0. Třída Servo to má ve své metodě write() ošetřeno tak, že hodnoty menší než 0 automaticky opraví na 0 a hodnoty větší než 180 automaticky opraví na 180. Takže podle toho jak to má napsané ať už pošle do sériového portu cokoli tak mojeServo.write stejně nastaví jen hodnotu v rozmezí 0 až 180. Tedy nic co by bylo mimo rozmezí 0 až 180. Pokud by to přeci jen chtěl trochu lépe ošetřit tak, že by do mojeServo.write předával jen hodnoty v rozmezí 0 až 180 pak třeba takto: Kód: void loop() { if (Serial.available() > 0) { // v bafru sériového portu je připraven nějaký bajt pro načtení tj. má smysl volat Serial.read()
// Serial.read() načte a vrátí dekadickou hodnotu v rozmezí 0 až 255 // odpovídající prvnímu bajtu načtenému z bafru sériového portu. // Po načtení je bajt z bafru sériového portu automaticky odstraněn // a při dalším volání Serial.read() bude načten další bajt. int Hodnota = Serial.read();
if (Hodnota >= 0 && Hodnota <= 180) { // jen pokud je Hodnota v rozmezí 0 až 180 mojeServo.write(Hodnota); } } delay(20); } Nicméně příčina problému se spáleným regulátorem bude dle mého názoru někde jinde jak už jsem zmínil v předchozí části tohoto tématu.
|
|
Nahoru |
|
|
puntak
|
Napsal: úte 14.07.2015 9:53 |
|
Nováček serveru
|
|
Registrován: 23.7.2014 Příspěvky: 7
|
Ahoj, může mi prosím někdo vysvětlit, jak měnit polaritu u brushless motorů s obousměrným regulátorem? Chápu to správně tak, že určité rozmezí z intervalu 0-180 je zpátečka? Díky za objasnění.
|
|
Nahoru |
|
|
jyrry
|
Napsal: úte 14.07.2015 12:25 |
|
Moderátor serveru
|
|
|
Registrován: 28.2.2005 Příspěvky: 20846 Bydliště: Rakovník, CZ Obrázky: 0
|
a) servo i modelářské regulátory jsou řízené signálem PWM s opakovacím rámcem 20ms a délkou pulzu 1000-2000us přičemž neutrálu (středu serva) obvykle odpovídá šířka pulzu 1500us. b) obousměrný regulátor má (musí mít) kolem středu jisté pásmo necitlivosti a nad/pod ním otevírá výkonový můstek v požadovaném směru s příslušnou frekvencí a plněním PWM dle vstupního signálu c) pro ovládání serv(a) je lepší použít HW časovač procesůrku = nahodit log.1 na výstupu, odpočítat přiměřenou dobu, nahodit log.0 na výstupu - bez pomocných funkcí (ServoOut apod), přímo. d) pro opakovací frekvenci tohoto signálu používám přerušení spouštěné druhým HW časovačem (používám procesory PIC)
_________________ jyrry.webnode.cz
|
|
Nahoru |
|
|
jyrry
|
Napsal: úte 14.07.2015 12:33 |
|
Moderátor serveru
|
|
|
Registrován: 28.2.2005 Příspěvky: 20846 Bydliště: Rakovník, CZ Obrázky: 0
|
Drondys píše: ... mojeServo.write ... Jak tyhle pomocné funkce fungují? Mně to v PICech skoro vždy nabourávalo program, když jsem začal používat přerušení... Proto je radši už nepoužívám.
_________________ jyrry.webnode.cz
|
|
Nahoru |
|
|
puntak
|
Napsal: úte 14.07.2015 14:27 |
|
Nováček serveru
|
|
Registrován: 23.7.2014 Příspěvky: 7
|
Děkuji ti. Stále mi ale není jasné jestli mohu použít mojeServo.write(0); -> zpátečka; mojeServo.write(125); ->neutral a mojeServo.write(180); ->dopředu
|
|
Nahoru |
|
|
jyrry
|
Napsal: úte 14.07.2015 15:06 |
|
Moderátor serveru
|
|
|
Registrován: 28.2.2005 Příspěvky: 20846 Bydliště: Rakovník, CZ Obrázky: 0
|
Tipuji že spíš mojeServo.write(90); ->neutral
_________________ jyrry.webnode.cz
|
|
Nahoru |
|
|
Kdo je online |
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 9 návštevníků |
|
Nemůžete zakládat nová témata v tomto fóru Nemůžete odpovídat 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 přikládat soubory v tomto fóru
|
|
|