Welcher Baustein für Frequenzteiler?

Gast #346503
Lesenswert?

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
Gast #346508
Lesenswert?

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
Gast #346509
Lesenswert?

> 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...
#346510
Lesenswert?

@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
Angehängte Dateien:
#346512
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren