ich kann mir eigentlich nicht vorstellen das es der Drehencoder selbst ist .. je nach Encoder hat der nen Ring mit 15,20,30,40 Kontakten , auf dem ein weiterer geschliffen wird . Na gut, fast wie nen Poti , könnte vll. doch sein .... aber Encoder gibts wie Sand am Meer Der wäre für 3€ austauschbar - falls man noch Radio haben will im Auto.
Sinn macht weder Poti , noch Encoder mit Servo , das ist klar , sind halt dumme Spielereien Wobei , wenn ich den Decoder an meinen Arm befestige , bewegt sich nen Servo 1:1 mit z.B.
Heute habe ich mal den Spaß gemacht und einen Servo mittel Drehencoder laufen lassen. Zusätzlich wird wie bekannt das Ganze auf einem alphanumerischen Display (16x2) angezeigt und über PinC.4+5 die Drehrichtung als Impuls detektiert.
Wen's interessiert , hier der einfache Code dazu :
mh ... na wenn denn dann schon sinnlose Übungen machst , dann mach doch mal die Herausforderung Drehencoder anstatt Poti und Servo ;-) .... könnte man ja mal gebrauchen ....
Das kommt , weil Du ja jetzt mit dem Atmega einen richtigen Mikrocontroller als Hilfsmittel hast und nicht son Krückending wie die Picaxe. Der Atmega is ja um Faktor 8 bis 10 x schneller und macht sowas quasi im "Standgas" ;-) Da macht das natürlich auch Spaß :-)
Ehrlich gesagt , hatte ich noch nie so direkt darauf geachtet. Meist nehm ich die nur für das Display, und da ist es relativ egal. Bei einer ADC Messung , dann noch mit LED als Anzeige, is so garnix proportional und fällt deshalb weniger auf. Ab 10K is des eh egal , kannst auch 100K oder 1M als ADC Poti nehmen ....... Wenn du so genau den Servo steuern wilst , vielleicht dann nicht nen Poti , sondern einen Spindeltrimmer ? Man könnte auch nen Drehencoder nehmen , das wird aber schwierig in der Programmierung für Dich ;-) Allerdings hatte ich des auch , 500 Motoren bestellt , sollten 30mA machen , jouuu .... zwischen 20mA und 60mA war die Realität.50% quasi Ausschussware.
mh .... dann bin ich wohl hier nen Ausserirdischer
Ich habe schon früher alles was ich bekommen habe erst einmal auseinander genommen - man will ja wissen wie des funktioniert
Man kann auch die 3:1 Regel nehmen , .... 3x inne Hose gegangen , beim 4. mal halbwegs funktionert.
Ok, Scherz beiseite. Es ist (mir) egal was es ist , Programme , Bauteile , Geräte , ect., grundsätzlich setze ich mich damit auseinander , studiere Anleitungen , suche Info - erst dann erwäge ich nen Lötkolben in die Hand zu nehmen. Für mich wäre das also nix , erst auf blauen Dunst zu probieren wie evtl. etwas funktionieren kann , ich muss es dann doch schon genau wissen ! Allein so ein ISD400xxx z.B. kostet schon an die $50.
Ich kenn einige die noch mangels Wissen mit alten analogen Bauteilen auf einer Euro-Platine rumbasteln, wobei man das heute auf einer 2cm x 2cm Platine mit nem µC schafft. Vll. ist es die Angst vor Neuem ? Aber gerade daran wächst man doch und entwickelt sich. Immer auf die selbe Stelle treten während die anderen schon Kilometer weiter sind ?
Diese Seite würde es nicht geben wenn ich nicht den Ergeiz gehabt hätte dutzende an neuen Sachen zu probieren oder Bauteile bis auf den Kern zu erlernen.
Zitat BBM, wie ist das mit "... das IR Protokoll von Sony ist Bestandteil der Picaxe" ??
Ich weiß jetzt nicht ob Revelution Education dem SONY ein paar Euro gezahlt hat das man es nutzen darf , aber die Picaxe hat von je her , seit Anbegin der (Picaxe)Zeitrechnung sowohl das Infrarot Empfangen als auch Senden (IRin + IRout ) als Bestandteil seines Befehlssatzes enthalten.
Auf Deutsch : Mit der Picaxe kann man Infrarot-Signale senden , als auch Empfangen - ABER nur Sony ! ( das SIRC Protokoll ) Guck doch mal in meiner deutschen Übersetzung (Menuleiste ) nach : INFRAin / INFRAout / IRin + IRout ....
Hier ein Bild aus "alten" Tagen :
und nen bissel Code :
SENDER
1 2 3 4 5 6 7 8 9 10 11 12 13 14
main: if pins>0 then
infraout 1,pins pause 30 infraout 1,0 pause 200 let pins=%00000000
Ja , man muss sich wohl echt überlegen was man bauen mag. 2 Gleisig analog , oder 1 Gleisig digital .... überhaupt , analog oder digital ... denke mit 500 € bist grad mal beim Einsteiger Set :-(
da hat man schon die Möglichkeit durch einen Mikrocontroller das etwas "luxioröser" zu gestalten , und dann nimmst nen banales Schiebepoti und regelst des manuell ?
Da man meist nur 1 oder 2 PWM-Kanäle hat , zeige ich hier mal wie man mittels Soft-PWM quasi jeden Pin oder alle als PWM nutzen kann.
PWM - was heißt das eigentlich ?
PulsWeitenModulation
Das heiß , in einem festgelegtem Takt , definiert man also die Weite des Pulses wie lang etwas an ist.
Sagen wir mal , der Takt ist 255ms lang. Dann wird also immer von 0-255 gezählt. Wenn denn dann die 255 erreicht sind , schalte ich einen festgelegten Pin AUS !
Jetzt stell ich z.B. meinen Pulsweitenbeginn auf 200. Das bedeutet , wenn der Takt beim Zählen die 200 erreicht hat , schalte ich einen festgelegten Pin an. Dieser bleibt solange an , bis der Takt zuende gezählt hat, und dann schaltet er den festgelegten Pin wieder aus.
Von 200 bis 255 ist nicht sehr viel , also wird der festgelegte Pin , in diesem Fall eine LED , nur sehr kurz aufleuchten . Stelle ich aber meinen Pulsweitenbeginn auf 10 , dann bleibt die LED natürlich länger an bis der Takt die 255 erreicht hat.
mh .... also ich würde das alles bissel autarker gestalten ...
Ich würde den Bereich der Gleise am Bahnhof vom Rest des Stromnetzes erst mal trennen. Die Gleise vorher und hinterher wieder verbinden.
Dann per Kontakt einem Mikrocontroller mitteilen wenn ein Zug einfährt. Per Mikrocontroller dann selber ein PWM generieren das den Zug stetig langsamer fahren läßt , bis zum Haltesignal. Nach einer gewissen Wartezeit wieder das PWM ansteigen lassen , bis der Zug wieder auf den regulären Gleisen fährt. Die Unterbrechung brauch ja lediglich 2mm sein und die rollt der Zug bei voller Fahrt dicke drüber.
Wäre so meine Idee. Das könnte man dann auch auf anderen Abschnitten nutzen , vielleicht nicht für Stillstand, aber als Langsamfahrt - und es ist völlig autark und unabhängig von den anderen etwaigen Zügen.
daten: data 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Da es ja grad nix Neues hier gibt , dachte ich , ich wärm mal ne alte Kamelle auf
Heute geht es um den : TM1637
Der TM1637 ist äußerst einfach zu programmieren. Er benötigt lediglich Clock und Data ( und natürlich Spannung , klar )
Der Punkt kann frei wählbar gesetzt werden , so das man ihn einsetzen kann für : - Spannung messen - Strom messen - Uhr(zeit) - Temperatur messen - Daten und vieles mehr
Er kann nur Zahlen anzeigen , darum wird auch nur ein WORD benutzt / gebraucht Da er nur 2 Leitungewn brauch , können auch mehrere TM1637 gleichzeitig genutzt werden , was aber dann schon mehr für Fortgeschrittenere ist
Clk Alias Portc.5 Dout Alias Portc.4 Din Alias Pinc.4
Declare Sub Send_Display(byval Displaywert As Word) 'The display can only show numbers Declare Sub I2C_write(byval Bdata As Byte) Declare Sub I2C_on() Declare Sub I2C_off() Declare Sub I2C_start() Declare Sub I2C_stop() Declare Sub I2C_ack()
Dim Zaehler As Byte Dim Str_Displaywert As String * 5 Dim Ascii As String * 1 Dim w As Word
I2C_on
' Beispiel : zählt von 1000 bis 9999 Do For w = 1000 To 9999 Send_Display w Waitms 50 Next w Loop End
'----------------------------------------------------------------- Sub I2C_ack() Reset CLK Waitus 5 Reset Dout Bitwait Din , Reset Set CLK Waitus 2 Reset CLK Set Dout End Sub
Sub I2C_off() I2C_start I2C_write &H80 'schaltet das Display aus I2C_ack I2C_stop End Sub
Sub I2C_on() I2C_start I2C_write &H88 'schaltet Display an mit 25% Helligkeit [ &H88 bis &H8F ] I2C_ack I2C_stop End Sub
Sub I2C_start() Set CLK Set Dout Waitus 2 Reset Dout End Sub
Sub I2C_stop() Reset CLK Waitus 2 Reset Dout Waitus 2 Set CLK Waitus 2 Set Dout End Sub
I2C_start I2C_write &H40 'Modus : autom. Stelle weiter gehen im Display .... I2C_ack I2C_stop I2C_start I2C_write &HC0 'Startadresse der 1. Anzeige (&HC0=1. / $HC1=2. / &HC2=3. $HC3=4. ---> immer von links) I2C_ack
For Zaehler = 2 To 5 Ascii = Mid(Str_Displaywert , Zaehler , 1) Select Case Ascii Case "0" :I2C_write &B00111111 Case "1" :I2C_write &B00000110 Case "2" :I2C_write &B01011011 Case "3" :I2C_write &B01001111 Case "4" :I2C_write &B01100110 Case "5" :I2C_write &B01101101 Case "6" :I2C_write &B01111101 Case "7" :I2C_write &B00000111 Case "8" :I2C_write &B01111111 Case "9" :I2C_write &B01101111 Case Else:I2C_write &B00000000 End Select I2C_ack Next
I2C_stop End Sub
Sub I2C_write(byval Bdata As Byte) Local Bbitcounter As Byte
For Bbitcounter = 0 To 7 'LSB first Reset CLK Dout = Bdata.bbitcounter Waitus 3 Set CLK Waitus 3 Next End Sub
Leider benutzt der TM1637 ein recht merkwürdiges Zahlensystem , so das man den Umstand gehen muss und es mit Select Case umrechnen lassen
Ach so , ... so etwas wie Frequenzauflagern. Die Spannung der Schienen laufen , sagen wir mal mit 60Hz und parallel wird dieser Frequenz eine weitere aufgesetzt mit z.B. 800Hz für die digitalen Signale der Fahrzeuge.
Da kommt mir doch gleich die Frage : Kann man das nicht auch analog hinbekommen ?
Zumindest das Einfahren in den Bahnbereich. Das man diesen "Abschnitt" so gestalten kann , das zwar volle Power auf die Gleise liegt aber im Bereich Bahnhof wird sowohl stetig reduziert , als auch später wieder stetig angestiegen ??
Ich denk , wenn man das alles rein digital macht , geht mir das zu sehr in professionelle als auch ins professionelle Geld Da bleibt das "Handwerk" zu sehr auf der Strecke