Sida 1 av 5

PIC-varvtäknare modell F1

Postat: 6 mars 2011, 14:38:10
av Quinna
Hej alla.

Jag är helt och hållet ny här på forumet och detta är mitt absolut första inlägg.

Jag skulle nog inte påstå att jag hör hemma på just detta forum. Mestadels hänger jag på div. bil-relaterade forum, typ som zatzy och garaget. Faktum är att jag överhuvudtaget inte håller på med elektronik förutom att man har ersatt någon lampa med någon hemmabyggd LED-lösning. Snarare håller jag på med streetracing, turbotrimmning och allmänt motorer.

Skälet till att jag har hamnat här är att jag har upptäckt att det finns enormt många möjligheter med t.ex PIC-processorer som går att applicera på mina bilprojekt. Och som mitt första projekt har jag tänkt bygga en varvräknare av LED-stapeltyp. Typ sån som man ibland ser inom Formula 1 och WRC.

Hårdvaran är i princip färdig. Jag har en 18F2455 48MHz som sitter på ett kort som en kollega till mig har designat. Han säljer dom bl.a som dataloggers. Kopplat till PORTB sitter 8st LED-dioder, 4 gröna, 2 oranga och 2 röda. Tanken är sen att ta en signal från mitt motorstyrsystem. En 0-5V fyrkantsignal som switchas 2ggr per motorvarv (4cyl 4takt).

Som jag nämnde innan så är detta mitt första programmeringsprojekt. Jag har än så länge bara slängt ihop en liten demo-kod som sveper dioderna och här är en liten film på ungefär hur det kommer se ut när bilen körs:

Bild

Men nu kommer jag till mitt problem. Eftersom detta är mitt första projekt så är jag inte speciellt vass på programmering. Jag har nu under ett par veckor när jag har haft tid över, letat efter bra sätt att fånga upp tändpulserna från styrsystemet. Min tanke har varit att köra en PULSIN-funktion som sparar pulserna till ett normname och och sen tända dioderna via ett CASE eller ELSE IF kommando.

Jag har sökt på google, kollat en massa forum (inklusive detta) men jag hittar inga exempel som jag får att fungera. Är det nån här som har tid att knåpa ihop ett exempel med förklaringar på hur man skulle kunna göra?

Mvh // Christian

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 14:46:31
av Quinna
Tänk nu på att jag aldrig egentligen programmerat förut utan allt jag kan har jag läst mig till genom hjälp-avsnittet i Proton IDE som jag använder, så det finns säkert mängder med misstag i koden nedanför. Men det är iaf såhär jag har tänkt mig funktionen, men som ni säkert kan gissa er till så fungerar inte denna kod.

Kod: Markera allt

 Start: 
   
Pulser = PulsIn PORTA.0 , 1       ' Measure a pulse on pin Tach. 
Print Dec Pulser , " "                 ' Display the reading 
                                            ' Repeat the process. 

Pulser = 0                             
 
 Select Pulser

Case >10286                  
    High LED1            
Case >9002             
    High LED2
Case >7999                 
    High LED3            
Case >7200
    High LED4
Case >6545
    High LED5
Case >6000
    High LED6
Case >5537
    High LED7
Case >5148
    High LED8

Case Else              
    Low PORTB          

EndSelect
 
If PORTA.0 = 1 Then 
    High PORTC.0 
Else 
    Low PORTC.0
EndIf 
     
GoTo start
Idéer?

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 14:51:47
av bos
Quinna skrev:Jag har sökt på google, kollat en massa forum (inklusive detta) men jag hittar inga exempel som jag får att fungera.
Lyser exempelvis nånting över huvud taget, eller kommer de inte i den ordning du vill?

Kort sagt, vad är det som *inte* fungerar?

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 15:22:13
av Quinna
Jag har bara testat detta på skrivbordet, och inte ute i bilen, men... det som händer är att så fort jag läser in i koden och kör "execute" så börjar ett par av dioderna börjar småglöda ungefär som att det vore kortis någonstans. Jag har även en pulsgenerator på jobbet som jag har testat att koppla signalinputen, men det gör absolut ingen skillnad.

Laddar jag däremot om till demo-koden igen så fungerar den klockrent, så det känns ju som att hårdvaran är korrekt ihopkopplad.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 16:39:10
av Andy
Flyter ingångarna i "demo" läge och hur är de anslutna i "skarpt" läge?

Ett schema med din inkoppling innehållande avkopplingar och filtrering samt hur kabeldragningen är utförd på plats hjälper till att förstå vad som kan vara fel.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 18:03:12
av Quinna
Vad är det du menar med att ingångarna "flyter" i demoläge?

Såhär ser layouten ut på kortet.

Bild

Jag har dock aldrig kopplat den till en 12V-källa än, utan bara kört den via USB.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 18:05:02
av ToPNoTCH
Då kan du sluta köra direkt.

Dina LED behöver strömbegränsas 220 - 360 ohm motstånd i serie med respektive.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 18:14:12
av Quinna
Varför då? Jag matar processorn med stabil 5V och det funkar utan bekymmer att driva dom som dom ska när jag kör demo-koden?

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 19:00:16
av gripner
Dioderna kommer "önska" dra en absurd mängd ström, högre än va de tål och vad kretsen klarar av, därav lägger man strömbegrensande resistorer i serie med dioden. runt 200-300 ohm beroende på ström dioderna tål/skall ha

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 19:09:11
av bos
Quinna skrev:Varför då? Jag matar processorn med stabil 5V och det funkar utan bekymmer att driva dom som dom ska när jag kör demo-koden?
Därför att en lysdiod utan strömbegränsare (motstånd) är i princip en kortslutning. Två saker kan hända: 1) lysdioden brinner sönder av strömmen 2) PIC:ens utgång brinner upp på grund av för hög strömmatning 3) kombination av 1 och 2.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 20:05:09
av Quinna
Skumt. Måste kolla med han jag köpte kortet av. Han driver ett företag där han utvecklar den här typen av komponenter + en massa annat. Nyligen har han tagit fram ett helt komplett motorstyrsystem, allt från designen av kortet till färdig programmering på körbar motor. Jag har frågat honom specifikt om man behöver strömbegränsa dioderna och jag fick svaret att det inte behövdes. Minns inte i nuläget motiveringen till varför, men det känns som att han borde ha koll.

Men om man bortser från att kanske dioderna ska strömbegränsas, finns det ingen som vet hur koden ska sättas upp t.ex. med PULSIN som timer-funktion? I koden ovan så blir det som jag skriver. Några av dioderna halvglöder och det ändras inte oavsett hur man beter sig. Tar jag däremot bort den delen av koden och bara har CASE-satsen kvar, så slutar detta fenomen, men självklart är alla dioder helt släkta.

Värt att nämnas igen är att om jag laddar in Demo-koden eller skriver typ bara HIGH LED1, så funkar det som det ska.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 20:16:56
av bos
>Jag har frågat honom specifikt om man behöver strömbegränsa dioderna och jag fick svaret
>att det inte behövdes. Minns inte i nuläget motiveringen till varför, men det känns som att
>han borde ha koll.

Han har inte koll.

Testa själv genom att koppla utgången på en 7805 direkt till anoden på en lysdiod och katoden till jord utan seriemotstånd emellan.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 20:21:41
av sodjan
> Minns inte i nuläget motiveringen till varför,...

Varför man *ska* göra det har du redan fått svar på.
Meningslöst att tjafsa vidare om det, speciellt som "nybörjare".

> Värt att nämnas igen är att om jag laddar in Demo-koden eller skriver typ bara HIGH LED1, så funkar det som det ska.

Det kan se ut så, kanske. Men det ändrar ingenting.
Men vad är problemet ? Du vill väl ha hjälp ?

> Men om man bortser från att kanske dioderna ska strömbegränsas...

Meningslöst att fundera på något annat innan du har fixat de grundläggande problemen.
Det *kan* vara just det som gör att inte resten fungerar...

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 21:26:03
av Icecap
Och sedan har jag allergi mot t.ex. "Pulsein"-funktionerna, man har ingen koll på hur bra den fungerar!

Jag byggde i sin tid en bildator med 10 tripmätare, hastighetsmätare, RPM-visning osv och jag lärde "lite" med det:
* Tändningspulsen ska avstöras redan vid tändspolen! Jag använde ett RC-lågpass-filter direkt på tändspolen. Innan det var det omöjligt att lyssna på radion för all knattar.

* Man SKA ha minst en transistor mellan tändningspulsen (från RC-filtret) och mikroprocessorn!

Jag mätte med en Capture-ingång och räknade tiden om till RPM, detta hände för varje 2 tändpulser med en upplösning om 1 RPM och en noggrannhet på samma värde.

Om du skrotar "Pulsein" och använder Capture-funktionen (hårdvara i processorn) blir det initialt lite knepigare programmeringsmäsigt men sedan blir allt lättare.

Och LED ska ALLTID vara strömbegränsat. Om designern inte fattar det är han helt enkelt inte speciell kunnig! Sedan kan vilken knallhatt som helst skruva ihop ett mikroprocessorbaserat kretskort och få det till att fungera, en kunnig kan däremot designa det så att det klarar EMC-test och en kunnig ser till att evt. LED är strömbegränsat.

Re: PIC-varvtäknare modell F1

Postat: 6 mars 2011, 22:16:45
av Quinna
Jag kommer inte plocka något alls från tändspolen utan kommer plocka in signalen direkt från mitt styrsystem (styrlådan jordar ner ett stift i kontakten motsvarande vad tändspolen skulle göra) så signalen borde vara relativt ren.

Du råkar inte ha möjlighet att slänga upp nåt exempel på en sådan CAPTURE-funktion?

Sen får ni väl ursäkta mig, men jag antog liksom att en person som kan utveckla ett komplett motorstyrsystem jämförbart med dom dyrare på marknaden skulle ha koll på hur man kan koppla en lysdiod, fast alla kan väl ha fel. För jag antar att det inte finns nåt sätt att strömbegränsa dioderna direkt från processorn?