Ich habe von einem Motor Hallsignale, die über einen gegebenen Verfahrweg 5000 - 8000 Impulse (je nach Getriebestufe) mit einem Puls/Pausenverhältnis von 50:50 abgeben. Eine gegebene Controllerschaltung kommt aber nur mit max. 300 Impulsen zurecht. Ich hab mir nun überlegt einfach nen Frequenzteiler ala 4017 davorzusetzten. Wenn ich das Datenblatt richtig verstanden habe, habe ich aber jetzt keine Signalverhältnis von 50:50, richtig? Weiss jemand ne sinnvolle Lösung um nen Frequenzteiler mit 16:1 - 26:1 mit 50:50 zu realisieren? Ich brauche nachher nur eine Getriebestufe und somit muss das ganze natürlich nicht variabel einstellbar sein... Werner
Wozu den Dekaden-Counter. Ein stink normaler 4-Bit Counter passt doch perfekt. 4516, 4520 oder so was in der Richtung.
Aeh. Mit einem Baustein kannst du nur maximal bis zu einem Teiler von 8 kommen. Aber man kann die kaskadieren und dann ist /16 /32 /64 /128 auch noch drinn. Je nachdem wie du vom Pin abgreifst könnte man das dann auch ganz leicht umschaltbar machen.
Alternativ könnte man natürlich auch einen kleinen Tiny nehmen. Vorteil: Ein 8 Pinner auf der Platine und du kannst das Teilverhältnis auch noch programmieren, bist also nicht auf 2-er Potenzen angewiesen.
hmm, ich glaub ich muss morgen mal nen bischen programmieren üben... Danke Karl Heinz
8000/300 = 26,66.... also z.B. 32 = 2^5. also ein Teiler durch 32 bietet sich da an. Mir fällt da spontan der 4060 bzw. 74HC4060 ein, der ist gängig, hat Teilungsverhältnis 16, 32, 64 und einige andere, und macht ein paar MHz. Wenn es eleganter sein soll: Der uralte aber elegante Peripheriebaustein Intel 82x54 bietet ein paralleles µC-Interface und programmierbare sehr flexible 16 Bit Timer und Teiler auch mit externem Clock-Eingang. Gruß Dietmar
> habe ich aber jetzt keine Signalverhältnis von 50:50,
Warum denn nicht? Da die Binärzähler flankengetriggert sind, hast Du,
solange die Frequenz des Eingangssignals konstant ist, nach wie vor ein
Puls/Pausen-Verhältnis von 1:1 (oder eben fiftyfifty...).
Ich hätte jetzt übrigens spontan auch an den 4060 gedacht...
@johnny.m ich hatte das so verstanden, daß das high byte durchgeschoben wird und jeweils nur 1 ausgang aktiv ist. der gewünschte wird dann rückgekoppelt. ist aber jetzt auch egal ;-) @all ich habe das ganze jetzt mal mit ne 2343 im avrstudio programmiert und simuliert. im avrstudio scheint alles zu funktionieren. könntet ihr mal drüberschauen was es da vielleicht noch zu verbessern gibt? Zweite Frage, wenn ich nen größeren AVR nehme mit 2 ext. Interrupts, könnte ich dann direkt 2 Signale damit teilen? Danke Werner
So, einen Fehler noch gefunden... Anbei der Code für 2 Sensoren an nem AT902313 (hatte ich hier gerade noch rumfliegen) Wer noch was zu verbessern weiss, gerne melden ;-) Werner
Das hier > > if (counterA > halfdivide) > { > Set_Bit(PB2); > } würde ich umformulieren zu if( counterA == halfdivide ) Set_Bit(PB2); Der Grund ist simpel: Während der Counter von halfdivide bis zum Endwert hochzählt, ist es nicht notwendig des PB2 jedesmal neu zu setzen (schadet allerdings auch nichts, verbraucht nur ein bischen mehr Zeit). Eimal setzen reicht. Wenn der counter dann den Endwert erreicht if( counter > Div_Factor ) wir der wieder auf 1 gesetzt (warum eigentlich 1 und nicht 0?) und der PB2 wieder gelöscht. Counter beginnt dann wieder von vorne zu zählen, bis halfdivide erreicht wird und PB2 wieder gesetzt wird.
Ok, leuchtet ein. Das ich mit 1 anfange hat machte mir das denken ein wenig leichter ;-) da ich nicht immer -1 rechnen muss Danke für die Unterstützung Werner
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.