|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Tor Jul 02, 2013 10:49 am Naslov sporočila: Težava: Arduino Uno - Futaba T2PL |
|
|
Pozdravljeni,
Pred kratkim sem kupil Arduino Uno ter Futaba T2PL. Ker imam v mislih projekt v katerem bi rad upravljal daljinsko vodenje izhodov z Futaba daljincem preko Arduino Uno mi to nekako ne uspeva. Premeril sem tudi izhod sprejemnika 1. kanala pri katerem dobim območje vrednosti:
1,94ms - skrajno desno
1,50ms - osnovni položaj
1,06ms - skrajno levo
Menim, da se težava pojavlja pri programiranju saj se ne dolgo srečujem s programiranjem Arduinota. Program sem vnesel po spodaj podani programski kodi, vendar je izhod 7 neprestano ˇ1ˇ, izhod 9 pa neprestanoˇ0ˇ. Trenutno ne vem ali so še potrebne kakšne dodatne nastavitve zato bi vas prosil za pomoč.
int motor1Left = 7;// defines pin 5 as connected to the motor
int motor1Right= 9;// defines pin 6 as connected to the motor
int enable = 5;
int channel1 = 2; // defines the channels that are connected
int Channel1 ; // Used later to
void setup ()
{
pinMode (motor1Left, OUTPUT);// initialises the motor pins
pinMode (motor1Right, OUTPUT);
pinMode (channel1, INPUT);// initialises the channels
Serial.begin (9600); // Sets the baud rate to 9600 bps
}
void loop ()
{
Channel1 = (pulseIn (channel1, HIGH)); // Checks the value of channel1
Serial.println (Channel1); //Prints the channels value on the serial monitor
delay(1000);
if (Channel1 > 1470 && Channel1 < 1510) /*These are the values that I got from my transmitter, which you may customize according to your transmitter values */
{
digitalWrite (motor1Left, LOW); // Sets both the
digitalWrite (motor1Right, LOW);// motors to low
analogWrite(enable, 100);
}
if (Channel1 < 1460) // Checks if Channel1 is lesser than 1300
{
digitalWrite (motor1Left, HIGH);// Turns the left
digitalWrite (motor1Right, LOW); // motor forward
analogWrite(enable, 100);
}
if (Channel1 > 1510) // Checks if Channel1 is greater than 1500
{
digitalWrite (motor1Left, LOW);// Turns the right
digitalWrite (motor1Right, HIGH);// motor forward
analogWrite(enable, 70);
}
} |
|
Nazaj na vrh |
|
|
mkezmah Član
Pridružen-a: Sre 21 Jan 2009 16:30 Prispevkov: 220 Aktiv.: 1.19 Kraj: Maribor
|
Objavljeno: Tor Jul 02, 2013 12:42 pm Naslov sporočila: |
|
|
OK, tukaj je nekaj neznank:
1. "premeril" si izhod - z arduinotom ali z osciloskopom...?
2. Kakšno vrednost Channel1 ti izpisuje Arduino preko serijskega porta?
na splošno, če uporabljaš tak if stavek raje uporabi:
if
else if
else if
Glede na opisano je videti, kot da Arduino Channel1 vedno prebere kot vrednost pod 1450. Preberi vrednost preko serijskega porta (program ti jo izpiše) in boš že imel en odgovor več.
LP
Marko |
|
Nazaj na vrh |
|
|
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Tor Jul 02, 2013 1:54 pm Naslov sporočila: |
|
|
Pozdravljen,
Izhod sem premeril s pomočjo pickit logic tool. Vrednost, katero dobim izpisano na serial monitor se mi zdi precej čudna saj kljub temu, da je oddajnik v osnovnem stanju, ta vrednost precej niha. Nihajoča vrednost na spodnji povezavi:
http://hopsasa/f/3p/cm/4fUyLJln/prtscr001.png |
|
Nazaj na vrh |
|
|
mkezmah Član
Pridružen-a: Sre 21 Jan 2009 16:30 Prispevkov: 220 Aktiv.: 1.19 Kraj: Maribor
|
Objavljeno: Tor Jul 02, 2013 2:43 pm Naslov sporočila: |
|
|
No, nekaj več informacij že imamo
Kot prvo moraš vedeti, da tvoj program meril dolžino pulza samo na eno sekundo. Iz prejetih vrednosti je jasno, da je zaznana vrednost v spodnjem območju (razen kakšne anomalije), zato je izhod kot ga dobivaš čisto v skladu s programom.
V programu preberi komentarje, da si moraš if stavke nastaviti glede na lastne vrednosti.
Za določitev lastnih vrednosti pa se boš moral še malo potruditi, preveriti kaj ti zazna Arduino pri obeh skrajnih vrednostih in osnovnem položaju. Poskusi tudi kaj se zgodi, če izvajaš meritve bolj pogosto (zmanjšaj delay(1000))....
Ko boš imel teh nekaj podatkov in izpise pa lahko greš počasi naprej...
LP
Marko |
|
Nazaj na vrh |
|
|
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Tor Jul 02, 2013 3:03 pm Naslov sporočila: |
|
|
Zmanjšal sem zakasnitev na 100ms, vrednosti res niso identične, vendar so glede na prejšnje vrednosti enako razgibane. Ni mi jasno tudi to, ko jas izklopim oddajnik, se še vrednosti kljub temu prikazujejo na Serial monitorju, razen ko odklopim signal iz Arduino-ta. takrat je vrednost 0.
Glede na zgoraj naveden program imam je podano območje v katerem bi se morala kazati neka odzivnost na Arduinu, ta pa je vedno konstantna ˇ1ˇ - (pin5). Predvidevam, da je program napisan smiselno vendar kljub temu ne deluje. |
|
Nazaj na vrh |
|
|
mkezmah Član
Pridružen-a: Sre 21 Jan 2009 16:30 Prispevkov: 220 Aktiv.: 1.19 Kraj: Maribor
|
Objavljeno: Sre Jul 03, 2013 8:11 am Naslov sporočila: |
|
|
Zakaj bi se morala kazati odzivnost na arduinotu?
Glede na tvoj program bo Arduino za vse, kar je pod 1460 postavil izhod tako, kot ti ga postavlja. In tvoje meritve so praktično vse pod 1460. Torej deluje pravilno.
Torej:
1. oddajnik nastavi čisto levo in si izpiši vrednosti
2. oddajnik nastavi čisto desno in si izpiši vrednosti
3. oddajnik pusti na sredini in izpiši vrednosti
4. ustrezno prilagodi vrednosti v if zanki
jaz bi najprej naredil to, preden se lotim problema "šuma".
LP
Marko |
|
Nazaj na vrh |
|
|
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Sre Jul 03, 2013 1:35 pm Naslov sporočila: |
|
|
Na spodnjih povezavah prilagam izmerjene vrednosti iz Pickit logic tool ter vrednosti dobljene iz arduina. Ne razumem popolnoma zakaj se mi zdijo vrednosti ki jih prikaže arduiino pri vseh položajih dokaj enake, saj se v vsakem stolpcu pojavi nekaj večjih vrednosti.
Povezava do vrednosti izmerjenih s Pickit logic tool:
http://hopsasa/f/1f/107/3lrIYUHH/prtscr006.png
Povezava do vrednosti dobljenih iz arduina. Vrednosti sem meril pri zakasnitvi 1 mikro sekunde:
http://hopsasa/f/47/k1/3HVp95ti/prtscr005.png
Po prikazanih vrednosti merjenih z Pickitom, so vrednosti v programu nastavljene pravilno, po vrednostih, katere poda arduino pa ne vem kako naj razberem pravilno vrednost? |
|
Nazaj na vrh |
|
|
mkezmah Član
Pridružen-a: Sre 21 Jan 2009 16:30 Prispevkov: 220 Aktiv.: 1.19 Kraj: Maribor
|
Objavljeno: Sre Jul 03, 2013 2:33 pm Naslov sporočila: |
|
|
Na tvojih izhodih Pickit Logic toola vidim, da imaš signal priključen na kanal 3. Domnevam, da je to pin 6, iz manuala je razvidno, da imaš na vhodu 6 Schmitt trigger:
http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit%202%20Logic%20Tool%20User%20Guide.pdf
Kar pomeni, da Pickit zazna high pri višji vhodni napetosti kot bi na pinih 4 in 5 in tudi kot bi zaznal tvoj Arduino. Arduino nima Schmitt trigger vhoda (nisem preverjal) in zazna tudi nižje napetosti. Torej ga lahko sproži šum nižje napetosti, če izhod RC receiverja ni čist. Domnevam, da je tukaj tvoj problem.
Najelegantneje bi bilo, če bi lahko izhod RC receiverja priklopil na osciloskop, oziroma poskusi vsaj na pinih 4 in 5 pickit logic toola - morda se ti bo tudi tam pričelo prej prožiti.
Če se to zgodi, je rešitev npr. Schmitt trigger med RC receiver in vhod arduinota.
LP
Marko |
|
Nazaj na vrh |
|
|
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Sre Jul 03, 2013 3:25 pm Naslov sporočila: |
|
|
Tako meril sem na kanalu 3 to je pin-6 na Pickitu. Na kanalu 1 in 2 mi ne gre zmeriti pulza. Se pravi ostane opcija da preizkusim z Schmitt Trigger-jem? |
|
Nazaj na vrh |
|
|
mkezmah Član
Pridružen-a: Sre 21 Jan 2009 16:30 Prispevkov: 220 Aktiv.: 1.19 Kraj: Maribor
|
Objavljeno: Čet Jul 04, 2013 7:49 am Naslov sporočila: |
|
|
Najprej poskusi s pull-down uporom, se pravi na vhod Arduinota dodatno veži cca 10k upor proti masi, morda bo to zgladilo špice.
Enostaven poskus, ne bo ti vzel veliko dela. Če to ne gre, pa Schmitt trigger.
LP
Marko |
|
Nazaj na vrh |
|
|
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Čet Jul 04, 2013 11:16 am Naslov sporočila: |
|
|
Spodaj prilagam povezavo:
http://www.youtube.com/watch?v=kV1QFVK5Bp0
Povezano imam Led in servo-motor pri katerem se vidi da prihaja do motenj. Pri poizkusu s Pull down uporom ni bilo uspeha. Poizkusiti še moram s Schmitt triggerjem. |
|
Nazaj na vrh |
|
|
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Pon Jul 08, 2013 11:59 am Naslov sporočila: |
|
|
Takole, rešil sem težavo in sicer se je pojavljala med oddajno in sprejemno napravo ker ni bilo točno enakega kvarčnega oscilatorja v oddajni in sprejemni napravi je prihajalo do motenj. |
|
Nazaj na vrh |
|
|
dejand287 Član
Pridružen-a: Sre 28 Sep 2011 14:56 Prispevkov: 59 Aktiv.: 0.39 Kraj: Duplek
|
Objavljeno: Čet Jul 25, 2013 4:07 pm Naslov sporočila: |
|
|
Pozdravljeni,
Po nekaj časa sem ugotovil, da bi potreboval PWM izhod glede na zgoraj napisan program. Trudim se, vendar mi ne uspeva kako bi uskladil pulz preko analognega vhoda na arduinu z PWM izhodom.
Ima morda kdo kakšno zamisel? |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 69 dni
Powered by phpBB © 2001, 2005 phpBB Group
|