Forum: Mikrocontroller und Digitale Elektronik Harley Davidson Blink Mikrocontroller


von Morgoth (Gast)


Lesenswert?

Hallo,
ich habe ein Problem mit meinem Motorrad mit den Blinkern.
Da es ein amerikanisches Modell ist, hat es zwei Blinkknöpfe, rechts und 
links.
Solange man einen Knopf drückt, blinkt es, lässt man ihn los, hört er 
auf.
Da der Lenker allerdings sehr hoch ist und wenn man an der Ampel lenken 
muss, ist es nahezu unmöglich, noch an den Blinkknopf zu kommen bzw. ihn 
zu drücken.
Daher ist mein Ziel:
Ich lege die Tasten auf Vss und lege sie dann an die Eingänge eines 
Attiny 15.
Ich programmiere den Attiny 15 so, dass er an einem seiner 2 Eingänge 
einen Tastendruck erkennt und dann einen der Ausgänge solange auf High 
setzt, bis der Knopf erneut gedrückt wird.
Den Ausgang schliesse ich dann an einen MOSFET (P oder N, jenachdem ob 
der Schalter original plus oder minus durchschaltet) und Drain und 
Source werden dann angeklemmt wie vorher der Schalter.
Selbstverständlich wird der Schalter vorher entprellt, dass beim Drücken 
der Taste nicht 3-5 mal das Relais an und wieder ausgeschalten wird.
Gesamtfunktion ist dann:
Linke Taste drücken und loslassen: Blinker links an
Linke Taste erneut drücken: Blinker links wieder aus
Rechts das gleiche Spiel, der Attiny 15 hat ja 2 Ein und 2 Ausgänge.
Der Attiny und die 2 Mosfets liegen in SMD Form dar, ausserdem wird ein 
Spannungsteiler auf 5V benötigt, was das grösste Bauteil darstellt.
Die Gesamtschaltung ist dann so klein, dass ich sie in dem Gehäuse mit 
den Blinkertasten verstecken kann.

Nun das Problem:
Ich studiere Elektrotechnik, allerdings kommen Mikrocontroller erst im 
nächsten Semester dran, und da nur der MSP430 und der 80x86.
Programmieren kann ich aber nur in c++ und java, der attiny 15 nimmt 
aber nur assembler.
Sprich ich hab keine Ahnung wo ich anfangen soll.
Ich fang an mit

.include "tn15def.inc"

um den Treiber zu laden.
Wie man die Knöpfe entprellt steht im Tutorial, nur wie soll ich die 
Rastfunktion machen?
Mit UND-Funktionen könnte ich ein virtuelles RS Flipflop nachbauen, mit 
rotate right könnte ich einen anfangsbit 0x10101010 mit dem aktuellen 
vergleichen 0x01010101 und bei knopfdruck wird ein 0x00101010 raus, 
UND-vergleich und bingo, nochmal rotate macht wieder 00010101 raus, 
vergleich negativ und loop zum start, dritte option wär den wert direkt 
ins register zu schreiben und auszulesen.
zum entprellen würd ich einfach hergehen und ne vergleichszeit von 100 
ms annehmen, den knopf schneller zu drücken wird schwierig ^^
wie gesagt ich weiss nicht direkt was ich machen soll da nur geringe 
grundkenntnisse da sind.

Versteht mich bitte nicht falsch: ich will hier niemanden meine arbeit 
machen lassen, weil ich faul oder sonst was bin.
Ich will lernen, wie man so was macht, leider steht nur das Entprellen 
im Tutorial, ein Vergleich und Speichern wie heir notwendig.
Die Suchfunktion hat ich sehr wohl benutzt und die hat mir zwar das mit 
dem Comfortblinker in dem Golf ausgespuckt, aber ich wills ja nicht nur 
3 Sekunden haben und den Code haben sie erst recht vergessen zu posten 
^^
Ich bin hier um zu lernen, nicht mir meine Arbeit abnehmen zu lassen ^^
also bitte helft mir
Gruss
Morgoth

von holger (Gast)


Lesenswert?

>usserdem wird ein Spannungsteiler auf 5V benötigt, was das grösste Bauteil 
>darstellt.

Ja, die sind einfach unverschämt groß.

>Ich studiere Elektrotechnik,

Studier was anderes.

>Programmieren kann ich aber nur in c++ und java, der attiny 15 nimmt
>aber nur assembler.

Dann nimm doch was anderes als den;)

von Flo (Gast)


Lesenswert?

Kannste nicht einfach einen anderen Schalter einbauen, der eine 
Rastfunktion hat?
Ich mein mit nem uC im Motorad holst du dir nur Probleme an Board, wie 
der Schutz der empfindlichen Komponenten vor dem bösen Boardnetz, 
Programmierung...

Oder du baust deinen Gedankengang mit RS-Flipflop diskret nach, schau 
mal nach Toggle-Mode.

von Karl H. (kbuchegg)


Lesenswert?

Morgoth schrieb:

> Programmieren kann ich aber nur in c++ und java, der attiny 15 nimmt
> aber nur assembler.
> Sprich ich hab keine Ahnung wo ich anfangen soll.
> Ich fang an mit
>
> .include "tn15def.inc"
>
> um den Treiber zu laden.
> Wie man die Knöpfe entprellt steht im Tutorial, nur wie soll ich die
> Rastfunktion machen?
> Mit UND-Funktionen könnte ich ein virtuelles RS Flipflop nachbauen, mit
> rotate right könnte ich einen anfangsbit 0x10101010 mit dem aktuellen
> vergleichen 0x01010101 und bei knopfdruck wird ein 0x00101010 raus,
> UND-vergleich und bingo,

?
Viel zu komplizert

   if Taste_links gedrückt
     if Wert_für_Blinker_links == 1
       Wert_für_Blinker_links = 0
     else
       Wert_für_Blinker_links = 1

Du musst hier nicht Bittricksen wie ein Wilder. Platz hast du genug und 
für nicht verbrauchtes Flash gibst kein Geld zurück

Den Wert für Wert_für_Blinker_links legst du in einem Register ab, den 
Wert für Wert_für_blinker_rechts legst du in einem Register ab. Aus dem 
Tutorial holst du dir noch raus, wie man Vergleiche macht und schon bist 
du unterwegs.


AVR-Tutorial


PS: Du kannst bei einem Tastendruck auch ganz einfach das entsprechende 
Register negieren. Aus 0x00 wird dann 0xFF und umgekehrt. Ist das 
Register 0x00, dann wird nicht geblinkt, ist es 0xFF wird geblinkt. Das 
Blinken machst du zb mit einem Timer und zugehöriger ISR.

von MarioT (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Das
> Blinken machst du zb mit einem Timer und zugehöriger ISR.

Er will doch nicht blinken, sondern nur den Blinker einschalten.(oder 
hab ich das jetzt falsch verstanden?)

von Karl H. (kbuchegg)


Lesenswert?

MarioT schrieb:
> Karl heinz Buchegger schrieb:
>> Das
>> Blinken machst du zb mit einem Timer und zugehöriger ISR.
>
> Er will doch nicht blinken, sondern nur den Blinker einschalten.(oder
> hab ich das jetzt falsch verstanden?)

Keine Ahnung.
Ich hab beim Durchlesen 3 mal den Faden verloren.

Ich hätt ja einfach einen rastenden Taster oder einen Kippschalter mit 
Mittelstellung (für links-aus-rechts) benutzt, aber das ist heutzutage 
zu banal.

von Morgoth (Gast)


Lesenswert?

kbuchegg hat recht
was ich suche ich eine art rastender taster, einmal drücken ein nochmal 
drücken aus
Das simuliert dann, dass der knopf gedrückt bleibt und das Blinkrelais 
angesteuert wird
Das Geblinke wird von dem übernommen
Das Problem mit RS Flipflop nachbauen ist halt dass das nicht ins 
Gehäuse passt, 1 RS, ein UND Glied, Spannungsteiler, MOSFETS und dann 
noch Kondensaotrschaltung zum Entprellen, wobei das NIE störungsfrei 
ist.
Ich möchte den Attiny nehmen um a)Assembler zu lernen und b)die krieg 
ich umsonst :D ausserdem ist er schön klein

von MCUA (Gast)


Lesenswert?

>Ich hätt ja einfach einen rastenden Taster oder einen Kippschalter mit
>Mittelstellung (für links-aus-rechts) benutzt, aber das ist heutzutage
>zu banal.
Den Schalter findet er nicht, weil keine 10MHz drauf stehen

von MarioT (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Ich hätt ja einfach einen rastenden Taster benutzt, aber das ist
> heutzutage zu banal.

Wenn man aber Interresse für µC entwickelt ist auch nicht falsch. Die 
original Schalter kann man so verwenden. Ein µC bringt aber am KFZ schon 
wieder andere Propleme.
Wie sieht es mit einem bistabielem Relais aus?

von Morgoth (Gast)


Lesenswert?

Die bistabilen Relais die ich hier habe sind  leider zu gross um sie in 
das Gehäuse zu bekommen, ich weiss nicht ob es da kleinere gibt
und wie du bereits erwähnt hast ist meine interesse am mC geweckt ^^
Was für Probleme sollen denn dabei auftreten?
Wir reden hier nicht von einem neuen Japanischem Auto mit zig Elektronik 
drin sondern nur von einer elektrischen, entkoppelten Zündung einem 
Blinkrelais und 6 Glühlampen

von MarioT (Gast)


Lesenswert?

Morgoth schrieb:
> Zündung

Das gibt einige 100Volt auf dem Netz.

von Morgoth (Gast)


Lesenswert?

Aaaaalso
um das hier mal aufzufrischen
Bistabies Relais kommt NICHT in frage, da einfach zu hoher 
PLatzverbrauch.
Die Überspannungen der Zündung werden durch Kondensatoren 
herausgefiltert, alles natürlich auf SMD Basis.
Daher zurück zum Thema ^^
Kontakt Schalter-> Ausgang high
Erneuter Kontakt Schalter-> Ausgang low
Danke im Vorraus

von Karl H. (kbuchegg)


Lesenswert?

Morgoth schrieb:

> Daher zurück zum Thema ^^
> Kontakt Schalter-> Ausgang high
> Erneuter Kontakt Schalter-> Ausgang low
> Danke im Vorraus

Wofür?

Sag blos, du bist immer noch nicht fertig?
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Tasten

von oldmax (Gast)


Lesenswert?

Hi
Nun ja, ein Relais ist dir zu groß, dafür möchtest du ja gern den 
ATTiny. Aaaber.... Blinkleuchten... 6 W ? pro Stück, mindestens 2 davon 
(vorn und hinten) machen bei einer 12 V Anlage schon mal 1 A. Bist du 
sicher, im Datenblatt steht, der ATTiny hat 1A Ausgänge ? Ach, sorry, 
die Lampen hängen ja am Blinkrelais, und das hat nur ca. 100mA. Da wird 
sich aber der ATTiny freuen. ( soweit ich weiß, schaltet der Schalter 
auch die Lampengruppe, der Blinker macht nur Tick.Tack...)
So nun ernsthaft, die kleinste Lösung wäre wirklich ein Schalter, links, 
mitte rechts. Nix gegen Interesse am µC, aber du hast wenn ich's richtig 
verstanden habe "Nichts". Keinen Progger, keine Software, keinen 
Controller, keine Kenntniss ... Du wirst für den Anfang schon ein wenig 
in die Tasche greifen dürfen. Nutz lieber die Zeit zum Cruisen, denn ein 
Controller ist ziemlich eigensinnig. Er wird dir viel Zeit abfordern.
Gruß oldmax

von Morgoth (Gast)


Lesenswert?

Stimmt der Schalter geht an die Blinker, allerdings geht der Ausgang des 
Attiny nicht direkt an die Lampe sondern an den FET, der den Schalter 
ersetzt, und dem sind sowohl Frequenzen im Bereich von 2 Hz als auch 
Ströme über 2A ziemlich wurscht ^^
Weiterhin hast du auch Recht, ich habe kein Progger, keine Software, 
kein Controller und keine Ahnung, aber ich habe einen Professor mit 
Progger, Software, Controller und Ahnung aber keiner Zeit, der mir 
gesagt hat:
Bring mir das Prog, ich lad es drauf und ätz dir die Platine.
Gruss
Morgoth

von Karl H. (kbuchegg)


Lesenswert?

Morgoth schrieb:

> Bring mir das Prog ...

> ich habe ... und keine Ahnung

Du hast hauptsächlich eines: Ein Problem

Aber ok. Nimm dir das Assembler Tutorial vor und fang an zu lesen. Ist 
zwar nicht ganz dasselbe aber auch mit dem AVR Studio kannn man mit dem 
Simulator einfache Dinge entwickeln.
Das Kapitel über I/O
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
und Vergleiche
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Vergleiche
sind deine Vorstufen. Wenn du die verstanden hast, gehst du über zu
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Tasten

Und dort findest du schon fast genau das was du suchst. Um das letzte 
Kapitel zu verstehen, sind die ersten beiden Vorbedingung.

von Karl H. (kbuchegg)


Lesenswert?

Ach und noch was:
Die Idee ein R/S Flip-Flip mit irgendwelchen UND-Gattern nachbilden zu 
müssen, legst du am besten gleich mal ad acta. Hier führt dich 
ausnahmsweise dein elektrotechnisches Wissen nicht weiter.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.