Hallo,
aufgrund der StVO-Novelle, die quasi fast den gesamten Bestand von E-Scootern in Österreich seit rund 10 Tagen illegal machte, ohne dass es vernünftige fixe Nachrüst-Möglichkeiten gibt, die für den gewöhnlichen Besitzer realistisch umsetzbar sind, ohne dass die Kosten oder der Aufwand dafür unverhältnismässig wären (*)
Nun zur Schaltung, die ich bisher noch nicht wegen Zeitmangels in die Praxis umgesetzt habe, aber das demnächt vorhabe. Sobald der Test OK ist, aktualisiere ich den Beitrag (und den Code)
Wenn jemand ein PICKit und ein Steckbrett zur Hand hat, kann er aber gerne auch für mich schonmal testen
Features:
- Es werden sowohl Momentan-Taster (wie bei Ninebot-Scootern mit Blinkern) als auch Schalter (wie bei Mopeds oder Lime-Leih-Scootern) unterstützt, was über einen Pin konfigurierbar ist.
- Es werden sowohl Active-High (LED in Durchlassrichtung oder P-Kanal-MOSFET) als auch Active-Low Ausgänge (LED entgegen Durchlassrichtung an 5V oder N-Kanal-MOSFET) unterstützt, was über einen Pin konfigurierbar ist
- Warnblinker-Funktion
Bedienung Taster-Variante:
- Kurz L/R drücken: Blinker der jeweiligen Seite an/aus oder Warnblinker aus
- Lang L/R halten: Warnblinker an
Bedienung Schalter-Variante:
- L/R an: Blinker der jeweiligen Seite an
- L+R an: Warnblinker an
- L+R aus: Blinker aus
Wenn man bei der Schalter-Variante auch den Warnblinker haben will, muss man über eine OR-Schaltung sicherstellen, dass der zusätzliche Taster beide Eingänge L und R auf Masse zieht. Dazu kann man es einfach passend verkabeln (z.b. DPST-Switch nehmen oder SPST-Switch mit Dioden/7432-Gatter parallel schalten)
Benötigt werden:
1x PIC12F508 (Code bzw. HEX läuft unmodifiziert auch auf PIC12F509 oder mit Modifikation der Config-Bits auch auf den alten OTP-Varianten PIC12C508(A), PIC12C509(A) die jemand noch aus PS1-Modchip-Zeiten vielleicht herumliegen hat - allerdings muss der Chip natürlich leer sein, da er nur einmal beschreibbar ist, d.h. wenn du keinen Programmer hast und die Chips irgendwo gekauft wurden, geht es nicht)
1x Blinker-Module (die meisten laufen nicht mit 5V)
Beispiel:
s.click.aliexpress.com
2x MOSFET (P-Kanal oder N-Kanal, einstellbar) oder Relay/SSR-Module (gibt es als Low/High-Active)
z.b. bekannter N-Kanal MOSFET AO3400: https://s.click.aliexpress.com/e/_c4BXkg5Z
1x Blinker-Taster oder Blinker-Schalter (einstellbar), z.b. jene vom Ninebot F2 Pro
Beispiel:
s.click.aliexpress.com
s.click.aliexpress.com
Optional bei Blinker-Schaltern: Ein Warnblink-Schalter
+ Spannungsregler-Module um die benötigten Spannungen aus der Akku-Spannung zu erzeugen (5V für den PIC, die Spannung für die LED-Module)
Test-Aufbau (ohne MOSFETs mit positiver Ausgangs-Logik):
- 2 LEDs mit Widerständen in Durchlass-Richtung auf PIC GP2 (DIP/SOIC Gehäuse Pin 5) und PIC GP4 (DIP/SOIC Gehäuse Pin 3) gegen Masse
- 2 Taster auf PIC GP0 (DIP/SOIC Gehäuse Pin 7) und PIC GP1 ((DIP/SOIC Gehäuse Pin 6) gegen Masse
- GP3 (DIP/SOIC Gehäuse Pin 4) gegen Masse, um Momentan-Taster auszuwählen
- GP5 (DIP/SOIC Gehäuse Pin 2) an 5V, um positive Ausgangs-Logik auszuwählen
- VDD (DIP/SOIC Gehäuse Pin 1) an 5V
- VSS (DIP/SOIC Gehäuse Pin 8) an Masse
* von 2 bestellten Aufsteck-Blinkern ist ein Set kaputt, beim anderen, das funktioniert zwar, aber man muss immer dran denken 3 Teile aufzuladen: Fernbedienung, Blinker links, Blinker rechts. Vergisst man das bzw. geht der Akku auf der Fahrt aus, ist das natürlich nicht toll, denn die Blinker sind zwar tagsüber relativ sinnlos, aber Nachts doch besser zu sehen als ein Handzeichen.
Gerhard: Da ich den Beitrag nicht mehr bearbeiten kann - kannst du bitte oben die Anhänge entfernen und folgende einfügen sowie den Passus, dass nicht getestet wurde durchstreichen?
Mode-Edit; done
Der Code wurde jetzt auf einem Steckbrett erfolgreich getestet und ein Bug bzw. des Warnblinkers in der Taster-Variante behoben
Technische Erklärung: Der WDT, der von mir als "Interrupt" missbraucht wird sorgte dafür, dass der PIC resetted, während noch der Taster gehalten wird, was dazu führte, dass je nachdem, wie lange man den Taster hält und in welche Periode man fällt der Warnblinker ausgelöst wird oder nicht.
CLRWDT in der Routine sorgt nun dafür, dass der Reset während auf das Loslassen der Taster gewartet wird nicht ausgelöst wird. Das war kein Problem beim kurzen Drücken, aber wenn man die Taster für die Warnblink-Funktion länger als eine Blink-Periode gedrückt gelassen hat, ist der Fehler mit 50% Wahrscheinlichkeit bzw. je nach Länge des Gedrücktlassens aufgetreten.
Aus meiner Sicht sollte der Code jetzt soweit passen.
Ebenso kann ich bestätigen, dass der Billig-Programmer K150 den PIC12F508 erfolgreich programmieren kann, da ich damit den Code auf den PIC12F508 geflasht habe. Die alten OTP-Varianten PIC12C508(A)/PIC12C509(A) kann der Programmer angeblich auch, aber die sind kritisch bzgl. VPP. Ich gehe aber stark davon aus, dass die niemand mehr (leer) herumliegen hat. Ich nutze für deren Programmierung einen alten PICstart Plus, ich denke ich habe noch ca. 20-30 Stk auf Lager.
Kann hier jemand Platinen layouten? Ich habe mich noch nicht in KICad eingearbeitet und EAGLECAD habe ich nicht mehr.
Ideal wäre ein Layout mit PIC12F508-I/SO (SMD), 2x AO3400A N-Kanal MOSFETs und evtl. einen AMS1117-5.0 sowie dazugehöriges "Vogelfutter" (Bypass 100nf für PIC, Gate-Widerstand (1k am PIC-Ausgang, 100k gegen GND, Logic-Select fix auf GND wenn N-Kanal MOSFETs genutzt werden, PIC GP3 Lötauge für GND = Taster oder offenlassen = Schalter, PIC hat internen Pull-Up auf GP3)
Würde sehr hilfreich sein.
PICKit-Clones gibt es übrigens günstig auf Aliexpress:
de.aliexpress.com
Ebenso wie den PIC K150-Programmer:
s.click.aliexpress.com
Mode-Edit: Thread bearbeitet laut Wunsch des TE.
aufgrund der StVO-Novelle, die quasi fast den gesamten Bestand von E-Scootern in Österreich seit rund 10 Tagen illegal machte, ohne dass es vernünftige fixe Nachrüst-Möglichkeiten gibt, die für den gewöhnlichen Besitzer realistisch umsetzbar sind, ohne dass die Kosten oder der Aufwand dafür unverhältnismässig wären (*)
Wenn jemand ein PICKit und ein Steckbrett zur Hand hat, kann er aber gerne auch für mich schonmal testen
Features:
- Es werden sowohl Momentan-Taster (wie bei Ninebot-Scootern mit Blinkern) als auch Schalter (wie bei Mopeds oder Lime-Leih-Scootern) unterstützt, was über einen Pin konfigurierbar ist.
- Es werden sowohl Active-High (LED in Durchlassrichtung oder P-Kanal-MOSFET) als auch Active-Low Ausgänge (LED entgegen Durchlassrichtung an 5V oder N-Kanal-MOSFET) unterstützt, was über einen Pin konfigurierbar ist
- Warnblinker-Funktion
Bedienung Taster-Variante:
- Kurz L/R drücken: Blinker der jeweiligen Seite an/aus oder Warnblinker aus
- Lang L/R halten: Warnblinker an
Bedienung Schalter-Variante:
- L/R an: Blinker der jeweiligen Seite an
- L+R an: Warnblinker an
- L+R aus: Blinker aus
Wenn man bei der Schalter-Variante auch den Warnblinker haben will, muss man über eine OR-Schaltung sicherstellen, dass der zusätzliche Taster beide Eingänge L und R auf Masse zieht. Dazu kann man es einfach passend verkabeln (z.b. DPST-Switch nehmen oder SPST-Switch mit Dioden/7432-Gatter parallel schalten)
Benötigt werden:
1x PIC12F508 (Code bzw. HEX läuft unmodifiziert auch auf PIC12F509 oder mit Modifikation der Config-Bits auch auf den alten OTP-Varianten PIC12C508(A), PIC12C509(A) die jemand noch aus PS1-Modchip-Zeiten vielleicht herumliegen hat - allerdings muss der Chip natürlich leer sein, da er nur einmal beschreibbar ist, d.h. wenn du keinen Programmer hast und die Chips irgendwo gekauft wurden, geht es nicht)
1x Blinker-Module (die meisten laufen nicht mit 5V)
Beispiel:
E-Scooter Waterproof Turn Signal Light Waterproof Flash Lamp for Electric Scooter Safty Warning Lights Riding Equipment Parts - AliExpress 18
Smarter Shopping, Better Living! Aliexpress.com
z.b. bekannter N-Kanal MOSFET AO3400: https://s.click.aliexpress.com/e/_c4BXkg5Z
1x Blinker-Taster oder Blinker-Schalter (einstellbar), z.b. jene vom Ninebot F2 Pro
Beispiel:
Blinker-Lichtschalter für Elektroroller, ABS, einfache Installation, stabiles Signal, manuelle Bedienung für SmartGyro K2 Elektroroller - AliExpress 18
Smarter Shopping, Better Living! Aliexpress.com
U1JC Universals Lenkerschalter Elektroroller Blinkerschalter Knopf - AliExpress 18
Smarter Shopping, Better Living! Aliexpress.com
+ Spannungsregler-Module um die benötigten Spannungen aus der Akku-Spannung zu erzeugen (5V für den PIC, die Spannung für die LED-Module)
Test-Aufbau (ohne MOSFETs mit positiver Ausgangs-Logik):
- 2 LEDs mit Widerständen in Durchlass-Richtung auf PIC GP2 (DIP/SOIC Gehäuse Pin 5) und PIC GP4 (DIP/SOIC Gehäuse Pin 3) gegen Masse
- 2 Taster auf PIC GP0 (DIP/SOIC Gehäuse Pin 7) und PIC GP1 ((DIP/SOIC Gehäuse Pin 6) gegen Masse
- GP3 (DIP/SOIC Gehäuse Pin 4) gegen Masse, um Momentan-Taster auszuwählen
- GP5 (DIP/SOIC Gehäuse Pin 2) an 5V, um positive Ausgangs-Logik auszuwählen
- VDD (DIP/SOIC Gehäuse Pin 1) an 5V
- VSS (DIP/SOIC Gehäuse Pin 8) an Masse
* von 2 bestellten Aufsteck-Blinkern ist ein Set kaputt, beim anderen, das funktioniert zwar, aber man muss immer dran denken 3 Teile aufzuladen: Fernbedienung, Blinker links, Blinker rechts. Vergisst man das bzw. geht der Akku auf der Fahrt aus, ist das natürlich nicht toll, denn die Blinker sind zwar tagsüber relativ sinnlos, aber Nachts doch besser zu sehen als ein Handzeichen.
Mode-Edit; done
Der Code wurde jetzt auf einem Steckbrett erfolgreich getestet und ein Bug bzw. des Warnblinkers in der Taster-Variante behoben
Technische Erklärung: Der WDT, der von mir als "Interrupt" missbraucht wird sorgte dafür, dass der PIC resetted, während noch der Taster gehalten wird, was dazu führte, dass je nachdem, wie lange man den Taster hält und in welche Periode man fällt der Warnblinker ausgelöst wird oder nicht.
CLRWDT in der Routine sorgt nun dafür, dass der Reset während auf das Loslassen der Taster gewartet wird nicht ausgelöst wird. Das war kein Problem beim kurzen Drücken, aber wenn man die Taster für die Warnblink-Funktion länger als eine Blink-Periode gedrückt gelassen hat, ist der Fehler mit 50% Wahrscheinlichkeit bzw. je nach Länge des Gedrücktlassens aufgetreten.
Code:
READ_BUTTONS_2:
COMF GPIO, W ; READ GPIO INVERTED BECAUSE
; ACTIVE LOW
ANDLW (1 << SW_L) | (1 << SW_R) ; MASK OUT INPUTS SW_L/SW_R
XORWF GPIO_SHADOW, W
CLRWDT
BTFSC STATUS, Z ; SKIP IF ZERO BIT IS NOT
; SET (A BIT CHANGED)
GOTO READ_BUTTONS_2
; AT LEAST ONE ACTIVE LOW INPUT WAS ACTIVE (= INVERTED BIT WAS HIGH)
GOTO MAINLOOP
Aus meiner Sicht sollte der Code jetzt soweit passen.
Ebenso kann ich bestätigen, dass der Billig-Programmer K150 den PIC12F508 erfolgreich programmieren kann, da ich damit den Code auf den PIC12F508 geflasht habe. Die alten OTP-Varianten PIC12C508(A)/PIC12C509(A) kann der Programmer angeblich auch, aber die sind kritisch bzgl. VPP. Ich gehe aber stark davon aus, dass die niemand mehr (leer) herumliegen hat. Ich nutze für deren Programmierung einen alten PICstart Plus, ich denke ich habe noch ca. 20-30 Stk auf Lager.
Kann hier jemand Platinen layouten? Ich habe mich noch nicht in KICad eingearbeitet und EAGLECAD habe ich nicht mehr.
Ideal wäre ein Layout mit PIC12F508-I/SO (SMD), 2x AO3400A N-Kanal MOSFETs und evtl. einen AMS1117-5.0 sowie dazugehöriges "Vogelfutter" (Bypass 100nf für PIC, Gate-Widerstand (1k am PIC-Ausgang, 100k gegen GND, Logic-Select fix auf GND wenn N-Kanal MOSFETs genutzt werden, PIC GP3 Lötauge für GND = Taster oder offenlassen = Schalter, PIC hat internen Pull-Up auf GP3)
Würde sehr hilfreich sein.
PICKit-Clones gibt es übrigens günstig auf Aliexpress:
PICKit2 PICKIT3 PICKit3.5 Programmierer + PIC ICD2 PICKit 2 PICKIT 3 PICKIT 3.5 Programmieradapter Universal Programmierersitz - AliExpress 502
Smarter Shopping, Better Living! Aliexpress.com
Ebenso wie den PIC K150-Programmer:
PIC K150 ICSP Programmierer USB Automatische Programmierung Entwickeln Mikrocontroller + USB ICSP kabel - AliExpress 502
Smarter Shopping, Better Living! Aliexpress.com
Mode-Edit: Thread bearbeitet laut Wunsch des TE.
Anhänge
Zuletzt bearbeitet von einem Moderator: