RC sekvensminne (version 1)
Min lillebror har beställt ett projekt av mig tills han fyller år (27 juni). Det går ut på att bygga en liten krets till hans flygradio, som man lagrar komplicerade rörelsemönster i. Rörelserna ska sen spelas upp på något enkelt sätt...
Nu har jag en fungerande version, som har fem minnen till fem olika rörelsemönster. Ganska häftig faktiskt, men svår att beskriva. Hur som helst sätter man sändaren i elevläge, och har min låda inkopplad. När man rör på högra spaken på radion så växlar min låda mellan att upprepa fem minnesslingor. En slinga när spaken är i mitten, en för uppåt, samt minnesslingor för höger, vänster och nedåt. Självklart kan man programmera in egna rörelser, med variabel längd (max 2 sekunder).
Minnesslingorna programmeras genom att man sätter spaken i det läget man vill att minnet skall sparas i. Sedan trycker man på en knapp och väntar på en nedräkning. Därefter rör man radions alla spakar i det mönster man vill spara. Sist sparas spakrörelserna antingen när tiden tagit slut (2 sek), eller man tryckt in programmeringsknappen igen.
Det finns just nu en bugg. För att ta reda på vilket läge spaken är i, blev jag tvungen att använda något längre fördröjning än normalt mellan två PPM-skurar, och det gör att hårt belastade servon vrider sig en bit under tidsluckan (nu på c:a 80 ms). Servonas vridning vid hög belastning gör att modellen "hackar till" litegrann . Bilden nedan visar när PPM-skurar sänds, och var uppehållet för att läsa spakarnas positioner finns.
Jag vet hur man halverar luckan (till som värst c:a 45 ms). Det ideala är om skurmellanrummet ligger på 20 ms, men då behöver man skriva mjukvaran i assembler, eller använt två mikrokontrollers (se version 2)
Beskrivning av PPM-skurarnas utseende:
PPM-skuren används för att beskriva i vilken position
servona skall ställas. Det kritiska är pulsbredden, som
varierar mellan 1 och 2 ms. 1 ms betyder att servot står i ena
ändläget. 2 ms betyder att servot står i andra ändläget. 1.5
ms används för att ställa ett servo i mittpositionen... Sen
är uppehållet viktigt. Uppehållet signalerar att pulserna som
följer anger positionerna för servona i ordning från servo ett
och uppåt. Hela skuren upprepas normalt var tjugonde millisekund
(med frekvensen 50 Hz).
För min lillebrors Hitec-sändare var amplituden på signalen
omkring 10 volt. Men andra sändare använder andra
spänningar...
Källkod:All min röriga källkod, samt biblioteket jag använt för I2C-kommunikation finns i filen RC_Sekvensminne.zip (89 kb), och en färdig hexfilen för programmering av mikrocontrollern finns i rcelev.hex. OBSERVERA: Om ni vill kompilera om projektet måste ni ändra alla sökvägar i projektfilen. Det görs enklast genom att ta bort alla filer som ligger i projektet, och sedan lägga in dom igen. Sen är det också nödvändigt att ha en korrekt installerad version av avrgcc (en gratis C-kompilator). |
||
Så här ser insidan av lådan ut. Kontakten längst till höger på kretskortet används för inkoppling till radion. | ||
Halva framsidan av lådan. Switchen till höger används för att koppla förbi minnet (samma resultat som att slå på/av). Den röda knappen används för att starta/stopa programmering av minnen. Lysdioderna visar vilket minne som spelas upp, dvs visar även hur joysticken på radiostyrningen står... | ||
Så här ser schemat ut... Ett större schema finns här När man kopplar in grejen till sändaren får man inte glömma en viktig sak. "PPM UT" på sändaren skall kopplas till "PPM IN" i bygget, och "PPM UT" på bygget kopplas till "PPM IN" på sändaren. Det är rätt så självklart om man tänker på hur t.ex en stereo kopplas in (line out till line in). |
||
Trolig koppling gemensam för de flesta Futuba- och Hitec-sändarna OBSERVERA att bilden visar honkontakten på sändaren sedd frammifrån. Glöm inte heller att "ut" från kontakten ska kopplas till "in" i bygget och vise versa.
|
||
Några länkar:
|
Du ansvarar själv för risken att skada dig själv/andra/saker/datorer/eller annat!