Forum: Mikrocontroller und Digitale Elektronik Schieberegister


von Rolf K. (Firma: Medicoat AG) (bonzo5619)


Lesenswert?

Hallo zusammen

Ich stehe vor der Aufgabe, 6 Elektromagnete welche einen Kreis bilden, 
mit einem quasi Lauflicht (immer 3 Elektromagnete sind eingeschaltet) 
anzusteuern.
Das Ganze soll recht flott gehen, so dass ich in 50 Mikrosekunden eine 
Runde gedreht habe. (20kHz)
Die Elektromagneten sind so beschaffen, dass sie die Frequenz handhaben 
können.
Auch ist die Ansteuerung nicht das Thema.
Microcontroller (z.B. Arduino)entfällt meiner Meinung nach, da zu 
langsam.
In ein neues Thema mit eines eigen aufgebauten Prozessorboards, möchte 
ich mich nicht einlassen.
Wie würdet ihr das Thema lösen, bin altershalber in der Lage, noch mit 
diskreten Bauteilen umzugehen. :-)

Gruss Bonzo

: Verschoben durch Moderator
von Lupo (Gast)


Lesenswert?

Hi!

Das ist ja recht langsam. Damit sollte jeder Wald und Wiesen uc leicht 
klarkommen. Arduino sollte ebenfalls gehen.

Lg

von Einer (Gast)


Lesenswert?

Baue einen Zähler von 0 bis 5 und hänge einen 74xx138 dahinter.

von MaWin (Gast)


Lesenswert?

Rolf K. schrieb:
> Ich stehe vor der Aufgabe, 6 Elektromagnete welche einen Kreis bilden,
> mit einem quasi Lauflicht (immer 3 Elektromagnete sind eingeschaltet)
> anzusteuern.
> Das Ganze soll recht flott gehen, so dass ich in 50 Mikrosekunden eine
> Runde gedreht habe. (20kHz)
> Die Elektromagneten sind so beschaffen, dass sie die Frequenz handhaben
> können.

Was sollen das für Elektromagnete sein ?

Eine Leiterschleife auf einem Chip ?

Jedenfalls kann so ein 'Magnet' nichtmal 1mH haben, damit das noch 
funktioniert.

von Rolf K. (Firma: Medicoat AG) (bonzo5619)


Lesenswert?

Die "Magneten" sind Ferit basierend. Nichts vor der Stange!

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Da gibt es zwei Möglichkeiten, Zähler und Decoder wie vorgeschlagen oder 
eine Statemachine.
Zustand 0: 000111
Zustand 1: 001110
Zustand 2: 011100
Zustand 3: 111000
Zustand 4: 110001
Zustand 5: 100011
und von 5 geht es zurück auf Zustand 0
alle andern der möglichen 64 Zustände sind nicht erlaubt.
Ein 6-bit Schieberegister wie in der Überschrift geht natürlich auch, 
passend rückgekoppelt. (3.Ausgang Q2 über Inverter auf den Eingang)
z.B. 74HC164
https://assets.nexperia.com/documents/data-sheet/74HC_HCT164.pdf

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Rolf K. schrieb:
> Das Ganze soll recht flott gehen, so dass ich in 50 Mikrosekunden eine
> Runde gedreht habe. (20kHz)

Also 1.2e6 rpm
Hast Du mal die Fliehkräfte berechnet, die dabei auftreten?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die Magnete stehen still, wenn ich recht verstanden habe. Aber ihre 
Induktivität ist nicht zu vernachlässigen. Um die schnell 
umzumagnetisieren braucht man hohe Spannungen. Für YIG-Oszillatoren 
nimmt man gern mal >100V. Und die müssen sich nur so schnell ändern dass 
beim Wobbeln ein Sägezahn mit bloßem Auge nicht mehr flimmert.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rolf K. schrieb:
> 6 Elektromagnete welche einen Kreis bilden, mit einem quasi Lauflicht
> (immer 3 Elektromagnete sind eingeschaltet) anzusteuern.
> Das Ganze soll recht flott gehen, so dass ich in 50 Mikrosekunden eine
> Runde gedreht habe. (20kHz)
Du musst die Magnete also eigentlich nur im 120kHz Takt umschalten? Das 
stupide Abarbeiten einer Tabelle mit 120kHz sollte ein µC schon noch 
hinbekommen. Welcher Jitter ist da erlaubt?

Man sollte aber natürlich etwas näher an den Controller und sollte nicht 
nur die nächste, schlecht implementierte Ardunio-Bibliothek hernehmen.

von Günni (Gast)


Lesenswert?

Christoph db1uq K. schrieb:
> Da gibt es zwei Möglichkeiten, .... oder eine Statemachine.
Die vorgeschlagene Statemachine lässt sich mit 3 D-FFs (1 1/2 Bausteine 
4013 oder 74HC74) einfach realisieren. Diese haben neben dem Ausgang 
noch einen invertierten Ausgang. Da in der Tabelle die letzten 3 Bit 
immer das Inverse der ersten drei Bits ist, kommt man bei Mitverwendung 
der negierten Ausgänge mit den 3 FlipFlops aus. Diese werden als Ring 
angeordnet, wobei der D-Eingang des folgenden FlipFlops mit dem 
Q-Ausgang des Vorgängers verbunden ist. Lediglich das erste FlipFlop in 
der Kette ist mit dem invertierten Ausgang des letzten FlipFlops 
verbunden. Der Takt wird an alle Takteingänge gelegt. Dann erhält man 
die folgende Zählweise:
000 -> 100 -> 110 -> 111 -> 011 -> 001 -> 000. Wie gesagt die restlichen 
Bits liefern die negativen Ausgänge. (Die Reihenfolge ist etwas anders, 
als die, die Christoph K. dargestellt hat, die gewünschte Funktion ist 
aber gegeben.) Bei der Schaltung kann ein Zustand zum "Hängen" führen, 
nämlich das Muster 010 -> 101 -> 010. Das kann man verhindern, indem man 
entweder beim Einschalten mit einem Reset-Signal einen der gültigen 
Zustände (z.B. 000 ) erzeugt, oder man decodiert einen der ungültigen 
Zustände (hier z.B. 101) mit einem 3-fach NAND aus und macht die 
Invertierung zwischen dem Ausgang des letzten FFs zum Eingang des ersten 
mit einem weiteren Gatter des NAND, wobei man den Ausgang der 
"Fehlererkennung" an einen Eingang dieses "Inverter-NANDs" legt. Dann 
erhält das erste FF eine 1 als Eingang und auf 101 folgt dann 110 - eine 
gültige Kombination.

von Günni (Gast)


Lesenswert?

Als Treiber für die Elektromagnete könnte man ULN2805 Bausteine 
verwenden. Siehe
https://cdn-reichelt.de/documents/datenblatt/A200/ULN2801A_ULN2802A_ULN2803A_ULN2804A_STM.pdf 
, falls der Strom, von 350 mA ausreicht. Der Baustein enthält auch die 
notwendigen Dioden zur Ableitung der Abschaltspannung. Einfach Pin 10 
mit der Versorgungsspannung der Elektromagnete verbinden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Günni schrieb:
> Der Baustein enthält auch die notwendigen Dioden zur Ableitung der
> Abschaltspannung.
Ich würde da aber eher keinen Freilauf verwenden, sondern über Z-Dioden 
(o.ä.) schneller abschalten.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

"output abs. max. 50V"
Das könnte je nach Induktivität zu wenig sein. Zum schnellen Abschalten 
ist vielleicht sogar eine negative Spannung nötig.

>Die Elektromagneten sind so beschaffen, dass sie die Frequenz handhaben
können.

was bedeutet "handhaben"? Konkret, welche Induktivität, welcher Strom?

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Günni schrieb:
> Die vorgeschlagene Statemachine lässt sich mit 3 D-FFs (1 1/2 Bausteine
> 4013 oder 74HC74) einfach realisieren. Diese haben neben dem Ausgang

 Und getaktet wird das Ganze wie?
 Mit 120KHz Quarz?
 Mit 1MHz Quarz und Teiler 8,33333?
 Wieviel ICs noch zusätzlich "einfach" dranhängen?

> Zustände (z.B. 000 ) erzeugt, oder man decodiert einen der ungültigen
> Zustände (hier z.B. 101) mit einem 3-fach NAND aus und macht die
> Invertierung zwischen dem Ausgang des letzten FFs zum Eingang des ersten
> mit einem weiteren Gatter des NAND, wobei man den Ausgang der
> "Fehlererkennung" an einen Eingang dieses "Inverter-NANDs" legt. Dann

 Und noch einen NAND-IC "einfach" dranhängen?

 Anstatt das Ganze mit einem Microcontroller (z.B. Arduino) zu lösen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Also 1.2e6 rpm
> Hast Du mal die Fliehkräfte berechnet, die dabei auftreten?

Wer sagt denn, dass es sich um einen makroskopischen Rotor handeln muss?

Ich vermute eher, dass der TE damit beschäftigt ist, ein 
(Blut-)Gerinnungsmessgerät o.ä. zu entwickeln. Eine Möglichkeit besteht 
darin, Eisenspäne in die Probe zu kippen und diese mit einem rotierenden 
Magnetfeld anzuregen. Die Bewegung der Späne wird mit einer einfachen 
Kamera erfasst. Sobald sich die Späne nicht mehr bewegen, ist die Probe 
geronnen, und aus der verstrichenen Zeit wird der INR bzw. Quick 
berechnet.

Kommerziell erhältliche Gerät sind nur minimal größer als einfache 
Blutzuckermessgeräte und genauso einfach zu bedienen. Statt eines 
Papierstreifens gibt es aber einen Kunststoffstreifen, in dessen Innerem 
eine Kapillare eingearbeitet ist, durch die ein Teil des Bluttropfens in 
einen Hohlraum mit den Eisenspänen gezogen wird. Sobald das Blut dort 
aufgezogen wurde, beginnt die eigentliche Anregung und Zeitmessung.

https://www.coaguchek.de/patienten/selbstkontrolle-der-gerinnung

Falls die Angabe des Arbeitgebers des TE tatsächlich korrekt sein 
sollte, dann stellt das Unternehmen Beschichtungsanlagen her. Und dort 
ist die Messung von Viskositäten, Partikelverteilungen in Suspensionen 
usw. ein wichtiges Thema. Ich kann mir gut vorstellen, dass dort an 
Messvorrichtungen auf Basis magnetisierbarer Teilchen gearbeitet wird.

: Bearbeitet durch User
von Lupo (Gast)


Lesenswert?

Ein kleiner 8pin ATTINY + 100NF sollten ebenfalls völlig ausreichen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Rolf K. schrieb:
> Microcontroller (z.B. Arduino)entfällt meiner Meinung nach, da zu
> langsam.

 Deiner Meinung nach...

 120KHz sind 8.33us Periodendauer, ergibt 134 Takte bei 16MHz.
 Lesen aus der Tabelle, ausgeben am Port, Pointer erhöhen und prüfen
 dauert genau 10 Takte.
 Die restlichen 124 Takte muss der Microcontroller in einem Loop
 verbringen (weil zu langsam?)

 Hier:
1
;                                              r16=0         r16<>0
2
;*********************************************************************
3
l_0:    ldi     zl, low(StepTable*2)            ;* 1
4
        ldi     zh, high(StepTable*2)           ;* 1
5
        ldi     r16, 6                          ;* 1
6
7
l_1:    lpm     r1, Z+                          ;* 3            3
8
        out     PortB, r1                       ;* 1            1
9
10
        rcall   124Takt_Dly
11
12
        dec     r16                             ;* 1            1
13
        breq    l_0                             ;* 2            1
14
15
        nop                                     ;*              1
16
        nop                                     ;*              1
17
        rjmp    l_1                             ;*              2
18
;=====================================================================
19
;                                                 10Cy         10Cy
20
21
124Takt_Dly:
22
        ldi     r17, 39
23
us2:    dec     r17
24
        brne    us2
25
        ret
26
27
StepTable:
28
  .db  0b000111, 0b001110
29
  .db  0b011100, 0b111000
30
  .db  0b110001, 0b100011

 30 Bytes Code, 6 Bytes Tabelle, 4 Register, Fehler < 0.5%

von Lupo (Gast)


Lesenswert?

Lupo schrieb:
> Ein kleiner 8pin ATTINY + 100NF sollten ebenfalls völlig
> ausreichen.

Korrektur: Der hat zu wenige Pins. Ein kleiner im größeren Dip-Gehäuse 
AVR wäre ev. besser. Ändert aber nichts daran,dass man nur 1 IC braucht.

von WerWieWas (Gast)


Lesenswert?

Den Timer auf den gewünschten Takt mit Interrupt einstellen und die 
Ports schalten.

Langsam verstehe ich, dass einige Leute hier bei manchen Fragen die 
Stirn runzeln :)

von Jens M. (schuchkleisser)


Lesenswert?

Ein NE555 für den Takt, ein 4017 als Zähler und ein paar Dioden, schon 
haben die Endstufen ihre Signale.
Wobei NE555 und Schieberegister auch ginge.

Mich interessiert, wozu man sowas braucht...

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Jens M. schrieb:
> Mich interessiert, wozu man sowas braucht...

Mich auch.

Andreas S. schrieb:
> Ich vermute eher, dass der TE damit beschäftigt ist, ein
> (Blut-)Gerinnungsmessgerät o.ä. zu entwickeln.

Ich glaube nicht, daß bei 1.2e6 rpm Blut noch gerinnen kann. Die 
Blutkörperchen zerreißt es regelrecht in ihre Bestandteile.

von Günni (Gast)


Lesenswert?

Marc V. schrieb:
> Anstatt das Ganze mit einem Microcontroller (z.B. Arduino) zu lösen.

Für den Takt kann man noch ein IC 4060 (Oszillator mit Teilerkette) 
nehmen. Realisiert man das Ganze mit 4000-er CMOS Bausteinen, muss die 
Versorgungsspannung nicht stabilisiert werden. Der Arduino benötigt eine 
stabile Versorgungsspannung und selbst auf meinem Arduino NANO Board 
befindet sich noch eine Menge "Hühnerfutter". Und dann braucht man noch 
einen PC auf dem man das Programm entwickelt und über USB in den NANO 
lädt. Da ist doch wohl fraglich, welche Lösung weniger Aufwand benötigt.

Ich habe im Berufsleben oft Leute erlebt, die mit einem Riesenaufwand an 
High-Tech-Equipment Aufgaben lösten, für die andere mit wenigen 
Standardbausteinen auskamen. Wenn ich zum Bäcker gehe, ziehe ich mir 
Schuhe an. Ich kenne Leute, die dafür ihr Auto nehmen, es im Winter 
sogar manchmal noch freikratzen und dann beim Bäcker noch einen 
Parkplatz suchen müssen. Intelligenz ist nicht, komplexe Lösungen zu 
kennen, sondern die für die jeweilige Aufgabenstellung einfachste Lösung 
zu finden.

von Stefan F. (Gast)


Lesenswert?

Günni schrieb:
> Ich habe im Berufsleben oft Leute erlebt, die mit einem Riesenaufwand an
> High-Tech-Equipment Aufgaben lösten, für die andere mit wenigen
> Standardbausteinen auskamen

> Intelligenz ist nicht, komplexe Lösungen zu
> kennen, sondern die für die jeweilige Aufgabenstellung einfachste Lösung
> zu finden.

Ja das kann ich direkt unterschreiben.

von Günni (Gast)


Lesenswert?

Andreas S. schrieb:
> diese mit einem rotierenden
> Magnetfeld anzuregen

Wenn das die Aufgabe ist, gibt es eine einfachere Lösung. Gibt man 2 um 
90° phasenverschobene Sinusschwingungen auf 2 Spulen(paare), die 
räumlich rechtwinklig zueinander stehen, erhält man einen 
Magnetfeldvektor, der mit konstanter Geschwindigkeit umläuft (wie ein 
Permanentmagnet, der sich mit konstanter Drehzahl dreht). Das ist zwar 
Analogtechnik, vom Aufbau her aber noch einfacher und das Magnetfeld 
"ruckelt" nicht.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
Frage nach der Anfangsbedingung nach Power on.
Irgendwelche Zufallszustände sind nicht erlaubt?
Sonst wie Sauerbier hier anzubieten:
AtTiny2313 und zwei CD4094. (Fängt bei 0 an.)
Muss nur auf die geforderte Anzahl von Zuständen angepasst werden,
evtl. nur 1 CD 4094-er.

ciao
gustav

von Stefan F. (Gast)


Lesenswert?

Karl B. schrieb:
> Foto von uralter Platine

Das geht aber nicht, du hast diese olle Platine dieses Jahr schon 
gezeigt. Der nächste Termin wäre erst 2021 gewesen :-)

Beitrag "Schieberegister (HEF4094B) Programmieren" (2018)
Beitrag "Digitalpins I/O" (2019)
Beitrag "LED´s aufschalten mit dem 74xxxx" (2020)

Sieht die eigentlich noch wirklich so aus, oder zerfällt sie inzwischen?

von Karl B. (gustav)


Lesenswert?

Rolf K. schrieb:
> immer 3 Elektromagnete sind eingeschaltet
Hi,
das mit der Software machen.
Der Vorteil des CD4094 liegt darin, dass
man drei Signale zur Ansteuerung verwenden kann.
Also Clock, Strobe und die Daten(Muster) als solche.
Und was die praktische Ausführung angeht,
statt der LEDs eben die Magnete.
Bild war nur so eine Idee. Sicher geht das noch kleiner.

ciao
gustav

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.