Schieberegister

(Firma: Medicoat AG) #6425312
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
Gast #6425356
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.
#6425378
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
#6425591
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.
Moderator (Firma: Titel) Persönliche Seite #6425614
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.
Gast #6425653
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.
Gast #6425668
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.
(Firma: Vescomp) #6425753
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.
(Firma: Schweigstill IT) Persönliche Seite #6425771
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.
(Firma: Vescomp) #6425784
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%
Gast #6426822
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.
Gast #6426834
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.
Gast #6426836
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.
#6426842
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
Angehängte Dateien:
Gast #6426846
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?
#6426850
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

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