Vad kan vara bättre en regnig semesterkväll än att få konstruera en elektronisk del till Elkojan. Nördigt, hmmm, ja!
Denna gång är det ett interface för att omvandla en analog signal från en vinkellägesgivare fäst på växellådans växelväljararm till fyra digitala ingångar på elmotorinvertern.
Jag har lite förkärlek till
Microchips 8-bitars mikroprocessorer, så ett gammalt demokort med en PIC18F2585 fick duga till detta interface. Det visade sig att det nu finns en gratis utvecklingsmiljö MPLAB-X att ladda ner till Win, MacOS och Linux. Fint!
 |
Underbara MPLABX |
Installationen var smärtfri och snart var jag igång med ett "Hello World" exempel kopplat till programmerings- och debug-interfacet PICkit3. Fast det var "BLINK" ett hysteriskt blinkande av en lysdiod på kortet, haha!
Förutom det 28-pinnars demokortet så är det faktiskt inte så många fler komponenter.
En vettig 5V spänningsregulator behövdes, här fick det bli en L387 som lämpar sig väl när det gäller 12V-omvandling i bil-miljö. För att driva utgångarna tänkte jag att en klassisk array driver, ULN2003, funkar nog. 5st 12V lysdioder för att visa växellägena: P, R, N, D och E samt en för att indikera fel (om givaren hoppat loss eller om någon av dess tre anslutningar lossat). Förutom detta sitter det en tryckkontakt för att kunna hoppa in i kalibrerings-mode och lära upp växellägena. Mikroprocessorn har inbygd RC-oscillator, så någon kristall behövs inte. Denna applikation ställer inga högre krav på tidsnoggrannhet.
  |
L387A och ULN2003 |
Applikationen läser kontinuerligt den analoga spänningen från givaren. Denna är mellan 0,5 och 4,5V för 90grader rotation. Om spänningen är utanför dessa gränser tänds en felindikering på interfacet och N (Neutral) väljs som aktiv växel. Mellan P och E är det 70grader, vilket borde fungera att fånga upp med givaren.
Kalibreringsläget kommer man in i om en knapp på interfacet hålls inne samtidigt som tändningen slås på. Lysdioderna blinkar för att visa kalibrerings-mode och sen samlas värden in för P-läget följt av de andra lägena med ett par sekunders mellanrum. Tanken är att "jucka"lite lätt med växelväljaren i varje läge för att hitta min/max positionen. Fyra värden(positioner) mellan de verkliga växellägena sparas sen undan i EEPROM som nivåer för lägesdetekteringen.
 |
Skärmdump från kodandet av interfacemjukvaran |
Mer om elektroniken och test av interfacet kommer...