"Cykeldator" till MC med hjälp av PIC - mest frå
"Cykeldator" till MC med hjälp av PIC - mest frå
Jag är väldigt ny på µcontrollers och funderar på att göra ett projekt för att lära mig mer, samtidigt som jag får en väldigt användbar gadget, men jag är rädd att det är alldeles för avancerat för någon med min kunskapsnivå, att det är för avancerat vet jag men det kan hända att det är alldeles för avancerat.
Det jag hade tänkt göra är att tillverka en fin liten box med en LCD som visar ett antal intressanta saker som t.ex.:
¤ Motorns totala gångtid som den sparar och inte kan raderas - någonsin, som visar i hela timmar och minuter
¤ Varvräknare med kontinuerlig visning samt ett minne som kan säga max uppmätt varvtal samt medelvarv sen man senast slog på boxen
¤ Stoppur med varvtidtagninsfunktion - knappar för start/stop, clear och mellantid. För ca. 10-20 varv och en upplösning som visar 00:00.0 minuter:sekunder.tiondelar och gärna upp till 99:59.9
Och på det en knapp som man kan växla vad den visar på LCDn, nåt i stil med att den visar först gångtid sen varvtal just nu sen maxvarv sen medelvarv sen kommer varvtiderna och sen börjar den om. Det var ju inte så noga, men iallafall. Och en knapp som man kan växla bakåt i listan om man skulle råka missa det man är på väg till så man slipper gå runt ett varv hade ju också varit bra.
Syftet med gångtiden är att man lätt ska se när det är dags för service samt visa eventuella framtida spekulanter på cykeln hur mycket den är körd med, varvtalet är bara för skojs skull så det går ju att skippa om det är för svårt och stoppuret är den viktigaste punkten då hela idén kom från att jag ville kunna mäta mina ungefärliga varvtider när jag tränar med ett enkelt knapptryck med ena tummen och sedan lätt kunna se hur det ter sig med träningen.
Den fina lilla boxen är till för att sättas på en 4-taktad encylindrig motorcykel med CDI tändsystem och elstart men inget elsystem för någon belysning eller blinkers eller så. Det som finns i elsystemet är batteri, relä till startmotorn, startmotor, CDI-box med lite kringutrustning, tändspole och generator.
Då jag är nybörjare har jag en hel del frågor en del är nog dumma och en del är nog uppenbara, jaja.
För att mäta varvtalet borde det ju funka att göra som Nisse har gjort till sin shiftlight, eller? Kan tillägga att det ska vara en uppdateringshastighet på displayen på runt 1000ms
Det här med minne till varvtalsmätaren, går det att göra överhuvudtaget? Vad jag kommer ihåg så har jag nog inte sett någon som har gjort så, men då har jag ju inte sett så mycket heller
Motorns gångtid borde väl gå att göra så att den registrerar på mer tid så länge det inte är mer än t.ex. 2 sekunder mellan varje tändpuls så att man mäter det på i stort sett samma sätt som varvtalet?
Minne till gångtiden, är det möjligt utan att den har spänning hela tiden, eller kan den lagra "fysiskt" eller vad man ska säga i PICen? Annars går det ju att ge den konstant spänning från batteriet, men går det att släcka ner allt förutom just den minnesfunktionen så att den inte drar så mycket ström då?
Stoppuret borde väl vara fullt möjligt, men jag kan tänka mig att det är väldigt komplicerat.
Är det någon som känner till några programexempel med liknande funktioner som man kan studera? Har googlat lite men det står still i skallen vad gäller söktermer.
Kan det tänkas räcka med en 16F628A? Annars har jag nån 16F877A, och den borde väl räcka till ang. antalet I/Os iallafall. Tänkte köpa nån finfin LCD av sodjan om det blir ett projekt av det hela också : )
Lämna gärna nåt tips om hur ni tycker att man borde gå tillväga med det hela, hjälp uppskattas ofantligt : ) Och ja, jag vet att det är ett väldans bygge med tanke på min erfarenhet, det värsta jag har gjort är väl att skriva texter på nån LCD och blinkat LEDs i schyssta mönster.
Vad tror ni om det hela?
// mulle
Det jag hade tänkt göra är att tillverka en fin liten box med en LCD som visar ett antal intressanta saker som t.ex.:
¤ Motorns totala gångtid som den sparar och inte kan raderas - någonsin, som visar i hela timmar och minuter
¤ Varvräknare med kontinuerlig visning samt ett minne som kan säga max uppmätt varvtal samt medelvarv sen man senast slog på boxen
¤ Stoppur med varvtidtagninsfunktion - knappar för start/stop, clear och mellantid. För ca. 10-20 varv och en upplösning som visar 00:00.0 minuter:sekunder.tiondelar och gärna upp till 99:59.9
Och på det en knapp som man kan växla vad den visar på LCDn, nåt i stil med att den visar först gångtid sen varvtal just nu sen maxvarv sen medelvarv sen kommer varvtiderna och sen börjar den om. Det var ju inte så noga, men iallafall. Och en knapp som man kan växla bakåt i listan om man skulle råka missa det man är på väg till så man slipper gå runt ett varv hade ju också varit bra.
Syftet med gångtiden är att man lätt ska se när det är dags för service samt visa eventuella framtida spekulanter på cykeln hur mycket den är körd med, varvtalet är bara för skojs skull så det går ju att skippa om det är för svårt och stoppuret är den viktigaste punkten då hela idén kom från att jag ville kunna mäta mina ungefärliga varvtider när jag tränar med ett enkelt knapptryck med ena tummen och sedan lätt kunna se hur det ter sig med träningen.
Den fina lilla boxen är till för att sättas på en 4-taktad encylindrig motorcykel med CDI tändsystem och elstart men inget elsystem för någon belysning eller blinkers eller så. Det som finns i elsystemet är batteri, relä till startmotorn, startmotor, CDI-box med lite kringutrustning, tändspole och generator.
Då jag är nybörjare har jag en hel del frågor en del är nog dumma och en del är nog uppenbara, jaja.
För att mäta varvtalet borde det ju funka att göra som Nisse har gjort till sin shiftlight, eller? Kan tillägga att det ska vara en uppdateringshastighet på displayen på runt 1000ms
Det här med minne till varvtalsmätaren, går det att göra överhuvudtaget? Vad jag kommer ihåg så har jag nog inte sett någon som har gjort så, men då har jag ju inte sett så mycket heller
Motorns gångtid borde väl gå att göra så att den registrerar på mer tid så länge det inte är mer än t.ex. 2 sekunder mellan varje tändpuls så att man mäter det på i stort sett samma sätt som varvtalet?
Minne till gångtiden, är det möjligt utan att den har spänning hela tiden, eller kan den lagra "fysiskt" eller vad man ska säga i PICen? Annars går det ju att ge den konstant spänning från batteriet, men går det att släcka ner allt förutom just den minnesfunktionen så att den inte drar så mycket ström då?
Stoppuret borde väl vara fullt möjligt, men jag kan tänka mig att det är väldigt komplicerat.
Är det någon som känner till några programexempel med liknande funktioner som man kan studera? Har googlat lite men det står still i skallen vad gäller söktermer.
Kan det tänkas räcka med en 16F628A? Annars har jag nån 16F877A, och den borde väl räcka till ang. antalet I/Os iallafall. Tänkte köpa nån finfin LCD av sodjan om det blir ett projekt av det hela också : )
Lämna gärna nåt tips om hur ni tycker att man borde gå tillväga med det hela, hjälp uppskattas ofantligt : ) Och ja, jag vet att det är ett väldans bygge med tanke på min erfarenhet, det värsta jag har gjort är väl att skriva texter på nån LCD och blinkat LEDs i schyssta mönster.
Vad tror ni om det hela?
// mulle
Det här är inte precis det du frågade efter, men borde ändå vara en bra start.
Melanies Olympic timer
Melanies Olympic timer
Om jag skulle göra projektet så är en Pic18 det självklara valet, programmeringen är enklare och man får bättre beräkningskapacitet.
All typ av tidtagning och varvräkning går att göra med inbyggda timers och pin-change-interrupt, så om du bara kopplar dina signaler(rena och fina) till rätt pinnar på Picen så är resten mjukvara, förutsatt att en kristall används som oscillator för Picen.
Minne till varvtalsmätaren är inget problem, "Alla" µkontrollers har inbyggt flash-minne som man kan lagra många(dock ej oändligt) gånger på.
Allt du vill göra är fullt möjligt med relativt lite hårdvara men programmeringen anser iaf jag som avancerad.
Om du är mogen för ett lite mastigare projekt påverkas nog mer av hur envis du är än dina förkunskaper.
Du har en stor fördel jämfört med när jag började med Pic... Du har ju Elektronikforumet.
All typ av tidtagning och varvräkning går att göra med inbyggda timers och pin-change-interrupt, så om du bara kopplar dina signaler(rena och fina) till rätt pinnar på Picen så är resten mjukvara, förutsatt att en kristall används som oscillator för Picen.
Minne till varvtalsmätaren är inget problem, "Alla" µkontrollers har inbyggt flash-minne som man kan lagra många(dock ej oändligt) gånger på.
Allt du vill göra är fullt möjligt med relativt lite hårdvara men programmeringen anser iaf jag som avancerad.
Om du är mogen för ett lite mastigare projekt påverkas nog mer av hur envis du är än dina förkunskaper.
Du har en stor fördel jämfört med när jag började med Pic... Du har ju Elektronikforumet.
Tog mig en funderare och kom fram till att jag gör dom olika funktionerna på separata PICs och LCDs.
Tänkte använda mig av Basic som är det jag har arbetat med tidigare, tror ni att tidtagningsprogrammet ryms på en 16F628A när jag använder PICBasic Pro?
Visst borde det att gå att programmera såhär:
puls på startknapp gör så att den börjar räkna tid
puls på varvknapp gör så att den registrerar värdet just då
puls på stoppknapp stoppar och återställer timern och registrerar tiden den stod på när den stoppades samt tiden sen senaste pulsen på varvknappen och visar sedan upp värdena i klartext på en LCD (behöver inte visa nånting förutom att den räknar när man har tryckt på startknapp) och sen väntar på ett tryck på startknapp
Verkar det som ett bra förlopp? Isånafall är det bara att börja knåpa på ett program vilket lär ta lite tid.
Varför går det inte att använda int. osc.? Eller är det kanske alltid bättre med kristall?
Det här med extra minne verkar lite väl komplicerat tycker jag, så om minnet inte räcker till så tar jag nog och inhandlar mig en kommersiell timräknare. Har försökt få tag i nåt kopplingsschema till en sån, men alla företag som gör dom har nog glömt att sätta ut sånt på internet ;-p
Lite OT: Har ni någon teori om hur en kommersiell timräknare fungerar? På dom tar man en tråd och lindar runt kabeln till tändhatten och sedan ska den fästas parallellt en bit efter själva enheten, så långt är jag med att den känner av när den går induktivt. Sedan blinkar en liten ikon på en LCD när motorn går och den visar tiden. Tror ni att den använder sig av någon sorts µC? Men det jag undrar mest över är om det går att ladda batteriet till den via spänningen den får upp från tändkabeln, för den går inte att stänga av utan den står och visar tiden 24/7 och det finns ingen möjlighet att byta/ladda batteriet i den, den har ingen kontakt på sig, inga solceller el.dyl. och den går inte att öppna utan att ha sönder den, och det vore ju dumt om den fick slut på batterierna.
Tänkte använda mig av Basic som är det jag har arbetat med tidigare, tror ni att tidtagningsprogrammet ryms på en 16F628A när jag använder PICBasic Pro?
Visst borde det att gå att programmera såhär:
puls på startknapp gör så att den börjar räkna tid
puls på varvknapp gör så att den registrerar värdet just då
puls på stoppknapp stoppar och återställer timern och registrerar tiden den stod på när den stoppades samt tiden sen senaste pulsen på varvknappen och visar sedan upp värdena i klartext på en LCD (behöver inte visa nånting förutom att den räknar när man har tryckt på startknapp) och sen väntar på ett tryck på startknapp
Verkar det som ett bra förlopp? Isånafall är det bara att börja knåpa på ett program vilket lär ta lite tid.
Varför går det inte att använda int. osc.? Eller är det kanske alltid bättre med kristall?
Det här med extra minne verkar lite väl komplicerat tycker jag, så om minnet inte räcker till så tar jag nog och inhandlar mig en kommersiell timräknare. Har försökt få tag i nåt kopplingsschema till en sån, men alla företag som gör dom har nog glömt att sätta ut sånt på internet ;-p
Lite OT: Har ni någon teori om hur en kommersiell timräknare fungerar? På dom tar man en tråd och lindar runt kabeln till tändhatten och sedan ska den fästas parallellt en bit efter själva enheten, så långt är jag med att den känner av när den går induktivt. Sedan blinkar en liten ikon på en LCD när motorn går och den visar tiden. Tror ni att den använder sig av någon sorts µC? Men det jag undrar mest över är om det går att ladda batteriet till den via spänningen den får upp från tändkabeln, för den går inte att stänga av utan den står och visar tiden 24/7 och det finns ingen möjlighet att byta/ladda batteriet i den, den har ingen kontakt på sig, inga solceller el.dyl. och den går inte att öppna utan att ha sönder den, och det vore ju dumt om den fick slut på batterierna.
"Tänkte använda mig av Basic som är det jag har arbetat med tidigare, tror ni att tidtagningsprogrammet ryms på en 16F628A när jag använder PICBasic Pro? "
Programmet får säkert plats men hur mycket ska du lagra (logga) och hur stort är minnet på en 16F628A?
"Lite OT: Har ni någon teori om hur en kommersiell timräknare fungerar? På dom tar man en tråd och lindar runt kabeln till tändhatten"
Om det inte är en CDI som jobbar med flera hundra volt utan en vanlig 12 voltare så kan du nog ta signalen ifrån minus på tändspolen.
Vad är för sorts motorcykel?
Programmet får säkert plats men hur mycket ska du lagra (logga) och hur stort är minnet på en 16F628A?
"Lite OT: Har ni någon teori om hur en kommersiell timräknare fungerar? På dom tar man en tråd och lindar runt kabeln till tändhatten"
Om det inte är en CDI som jobbar med flera hundra volt utan en vanlig 12 voltare så kan du nog ta signalen ifrån minus på tändspolen.
Vad är för sorts motorcykel?
Förutom att det inte är pic så skulle en
AVR BUTTERFLY kunna fungera, processor, minne och LCD i samma enhet.
4 Mbit dataflash för loggning.
http://www.lawicel-shop.se/shop/ har dessa t.ex. 240 kr färdiga.
AVR BUTTERFLY kunna fungera, processor, minne och LCD i samma enhet.
4 Mbit dataflash för loggning.
http://www.lawicel-shop.se/shop/ har dessa t.ex. 240 kr färdiga.
Den behöver inte kunna läsas av under körning då det är en cross, utan den ska bara läsas av stillastående.
AVR kan jag ingenting om, har aldrig läst en rad om dom, så det blir nog svårt. Är dom liknande i hårdvaran och mjukvaran?
Vilket minne är det som datan loggas i? Logiskt sett (i mitt huvud) vore väl att lagra i flashminnet som är 3.6KB (2K Words) i 16F628A. 2000 words borde väl räcka till ett gäng tider iallafall, det känns som att dom inte tar så väldans mycket plats?
AVR kan jag ingenting om, har aldrig läst en rad om dom, så det blir nog svårt. Är dom liknande i hårdvaran och mjukvaran?
Vilket minne är det som datan loggas i? Logiskt sett (i mitt huvud) vore väl att lagra i flashminnet som är 3.6KB (2K Words) i 16F628A. 2000 words borde väl räcka till ett gäng tider iallafall, det känns som att dom inte tar så väldans mycket plats?
Du skulle kunna hänga på ett 4 Mbit serial DataFlash till din PIC.
www.atmel.com/dyn/resources/prod_documents/doc3443.pdf
www.atmel.com/dyn/resources/prod_documents/doc3443.pdf
Jag har ett projekt där jag samlar ihop data och sparar i EEPROM. På min enhet hemma har jag en FRAM-EEPROM som medger en sjujäkla massa skrivningar men "vanliga" EEPROM klarar garanterat 10K skrivcyklar.
Detta har medfört att jag har en styrning som samlar ihop data över 5-10 min för att sedan spara dom, därmed blir belastningen på EEPROM-delen avsevärd mindre och jag kan som sämst förlora 5 min data på en grej som kör 24/7.
I ditt fall hade jag kopplat så att det finns kvar ström vid avstängning, denna avstängning avkännas, data sparas och enheten stänger ner sedan, på detta sätt blir det "en sparning" av data vid knapptryckning + vid avstängning av hojen.
Detta har medfört att jag har en styrning som samlar ihop data över 5-10 min för att sedan spara dom, därmed blir belastningen på EEPROM-delen avsevärd mindre och jag kan som sämst förlora 5 min data på en grej som kör 24/7.
I ditt fall hade jag kopplat så att det finns kvar ström vid avstängning, denna avstängning avkännas, data sparas och enheten stänger ner sedan, på detta sätt blir det "en sparning" av data vid knapptryckning + vid avstängning av hojen.