Forum: Mikrocontroller und Digitale Elektronik Einsteiger Hobbyist: Aktive Signale Zählen?


von Maxi W. (maxi_w)


Angehängte Dateien:

Lesenswert?

Liebe Forumsmitglieder,

mein Name ist Max, angehender Mathematiker und dies ist mein erster 
Beitrag hier im Forum. Meine Hochschule stellt mir, als  Fachfremden, 
durchaus Software zum erstellen und "animieren" von Schaltplänen zur 
Verfügung, jedoch habe ich den Anhang mit mir bekannter Software 
erstellt. Verzeiht mit bitte Fehler, aber zeig sie mir gerne auf.
Meine Grundkenntnisse in ELT beschränken sich auf grundlegendste 
Rechnungen, etwa Abiniveau. Logische Gatter, Dioden, Widerstände sind 
mir aber ein Begriff und ich habe bereits unter Anleitung einen 
elektronischen Würfel auf einer Platine gelötet.

Mein Interesse für ELT ist relativ hoch und ich hoffe mir mit eurer 
Hilfe via learning-by-doing mehr Wissen und  Können anzueignen. Dabei 
ist mir nicht nur wichtig, dass Sachen irgendwie funktionieren, ich 
möchte auch grob verstehen was passiert und wieso eine Lösung gut oder 
schlecht ist.


Zur Stunde habe ich bereits eine konkrete Frage und zwar möchte ich die 
Anzahl aktiver Signale zählen und anhand davon eine bestimmte Anzahl an 
Leuchtmitteln aktiveren, solange die Signale aktiv sind. Im Anhang 
befindet eine Skizze dazu. Das Problem im Anhang habe ich in der Theorie 
mit logischen gattern bereits gelöst - aber bestimmt nicht optimal. 
Allerdings würde ich gerne eine allgemeinere Lösung finden die aktiven 
Signale zu zählen, insbesondere so, dass die Lösung auf 10 Input Signale 
anwendbar/erweiterbar ist und analog auch bis 10 gezählt werden kann. 
Dazu fallt mir nur ein sehr sehr sehr viele Gates zu verwenden - das 
muss einfacher gehen! Ein Bauteil zum zählen aktiver Signale habe ich 
nicht gefunden.
Daher ist meine Frage zu aller erst wie Ihr das Problem angehen würdet - 
mit 3 und mit 10, bzw. "n" Inputs und Outputs.
Würdet Ihr Euch einer Gatterschlacht unterziehen oder ist sowas mit 
einem Microcontroller machbar?


Ich danke Euch schon mal für die Hilfe!
Max

: Verschoben durch Moderator
von N. M. (mani)


Lesenswert?

Das kommt hauptsächlich auf DEINE Fähigkeiten und Kenntnisse an.

Wenn es keine weiteren Anforderungen gibt ist von

diskreten Gattern (Kenntnisse in Digitaltechnik und Aufbau von 
elektronischen Schaltungen notwendig)

CPLD/FPGA (zeichnen von Gattern in einem Schaltplan/VHDL/Verilog/...)

uC (Kenntnisse in einer Programmiersprache ASM/C/CPP/Phyton/...)

viel möglich.

von Maxi W. (maxi_w)


Lesenswert?

Danke mani für deine Antwort!

Ich kann auf jeden Fall C und Python programmieren. Also schätze ich das 
so ein, dass du mir eher uC empfehlen würdest richtig?
Kennst Du, oder ein Anderer, eine ratsame Python Bib?


p.s.: Ich habe nur Programmiererfahrung mit Programmen die ohne 
Schnitstelle nach Außen auf Android oder Windows laufen sollten.

von Jack V. (jackv)


Lesenswert?

Du kannst Python, möchtest aber für dieses triviale Beispiel eine 
eigene Lib?

Mircopython läuft auf einigen Microcontrollern, Doku ist unter 
https://docs.micropython.org/en/latest/ zu finden.

Edit: so, wie oben gezeichnet, wird es nicht funktionieren: die Dioden 
sperren in jedem Fall. Stromquelle falschrum gezeichnet?

: Bearbeitet durch User
von Maxi W. (maxi_w)


Lesenswert?

Es kann sein, dass ich die Stromquelle falsch gezeichnet habe, ja. 
Danke.
Mir fällt grade auf, dass unter der Schaltung aus noch Unfug gezeichnet 
ist. Der diente nur meiner eignen Orientierung und hat nichts mit meiner 
Frage zu tun.

Ausgezeichnet, dass das Problem Trivial für dich ist, dann werde ich 
bestimmt auf eine nicht all zu komplizierte Lösung stoßen.

von N. M. (mani)


Lesenswert?

Maxi W. schrieb:
> dass du mir eher uC empfehlen würdest richtig?

Es ist eine Möglichkeit. Wenn du dich mit C bereits auskennst, wäre es 
wahrscheinlich die, mit der du am schnellsten zum Ziel kommst. Mit C 
oder Cpp hast du auch eine Sprache mit der du im Embedded Bereich viele 
fertige Plattformen für kleines Geld findest. Arduino ist eine davon. 
Für den Einstieg empfehle ich definitiv ein FERTIGES Evalboard. Die 
Dinger sind heute so günstig und funktionieren Out of the Box. Teilweise 
auch mit Debugger (z.B. von ST, TI oder anderen Herstellern), was ich 
sehr schätze und für Anfänger auch nicht schlecht finde da man manche 
Zusammenhänge evtl besser erkennt.

Maxi W. schrieb:
> Ich kann auf jeden Fall C und Python programmieren.
Python geht theoretisch auch. z.B. auf einem ESP oder ähnliches. Habe 
ich ehrlich gesagt noch nie verwendet. Soll aber gehen.
Ich würde C nutzen da man nicht so stark auf eine unterstütze Plattform 
angewiesen ist.

Maxi W. schrieb:
> Ich habe nur Programmiererfahrung mit Programmen die ohne Schnitstelle
> nach Außen auf Android oder Windows laufen sollten.

Wenn du eine Plattform hast die einen Debugger integriert hat und die 
Oberfläche erst Mal eingerichtet ist wirst du davon nur wenig merken 
denke ich. Ich persönlich würde dir zu einem STM Board raten. Dann noch 
die Arduino Bibs dazu damit du nicht so viel mit den Hardware Registern 
am Anfang arbeiten musst. Entwicklungsumgebung geht Arduino, Visual 
Studio, Plattform IO, Eclipse und viele mehr.
Mit Arduino oder Visual Studio solltest du auch schnell dein erstes 
Blink Programm hinbekommen denke ich.

von Jack V. (jackv)


Lesenswert?

Bist du bereit, etwas Geld zu investieren? Für vielleicht 15€ bekommst 
du ein Steckbrett, eine Handvoll LEDs, Widerstände, kleine Taster, ein 
paar Meter 0,6mm Schaltdraht und einen Raspberry Pi Pico (für den gibt 
es Micropython, wenn es C sein darf, geht es noch deutlich billiger) – 
und dann kannst du direkt lostüfteln, dein Vorhaben oben umzusetzen. 
Dauert dann bestimmt nicht lange bis zu den ersten Aha-Erlebnissen :)

Edit, Ergänzung: ein großer Vorteil für den absoluten Einsteiger bei 
Micropython ist REPL – man kann quasi live am Programm basteln. Bei 
C/C++ muss jedes Mal kompiliert und auf den Controller geschrieben 
werden. Oben genanntes Board lässt sich aber auch problemlos mit C/C++ 
bedienen.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Maxi W. schrieb:
> Dazu fallt mir nur ein sehr sehr sehr viele Gates zu verwenden - das
> muss einfacher gehen! Ein Bauteil zum zählen aktiver Signale habe ich
> nicht gefunden.

Das hast du korrekt erkannt. Früher gab es für solche Aufgaben mal 
programmierbare Logik-Array (PAL).

Alternativ kann man für solche Dinge auch Eproms zweckentfremden. Da 
legst du die Signale an die Adress-Eingänge. Im Eprom befindet sich eine 
von dir erstellte Wahrheitstabelle, die für jede mögliche 
Eingangs-Kombination festlegt, welche Ausgänge auf HIGH bzw. LOW gehen 
sollen.

Hobby-freundlicher empfinde ich in diesem Fall die Mikrocontroller.
> Ich kann auf jeden Fall C und Python programmieren.
Na dann ist das das sicher auch für dich eine naheliegende Option.

Vielleicht gefällt Dir mein Tutorial, da wird ein kleiner 1€ 
Mikrocontroller verwendet mit dem du das umsetzen kannst: 
http://stefanfrings.de/mikrocontroller_buch/index.html

Ansonsten wäre hier auch ein Arduino Nano zu empfehlen, wahlweise mit 
Arduino Framework (C++) oder plain C programmiert.

> Kennst Du, oder ein Anderer, eine ratsame Python Bib?

Python ist für die klassischen Mikrocontroller zu "fett". Das ist eher 
die Welt von PC und Raspberry Pi. Ganz neu ist hier der Raspberry Pi 
Pico. Der ist aber gerade erst auf den Markt gekommen, also wohl noch 
nicht ganz so Anfängerfreundlich, wie etablierte Mikrocontroller.

Alternativ kann man für solche Dinge auch Eproms zweckentfremden. Da 
legst du die Signale an die Adress-Eingänge. Im Eprom befindet sich eine 
von dir erstellte Wahrheitstabelle, die für jede mögliche 
Eingangs-Kombination festlegt, welche Ausgänge auf HIGH bzw. LOW gehen 
sollen.

In deinem Schaltbild sind die Dioden oder die Stromversorgung  falsch 
herum eingezeichnet. Du musst sie auch woanders platzieren, nämlich 
direkt an die Ausgänge der Logikschaltung. Also brauchst du 6 Dioden.

von Jack V. (jackv)


Lesenswert?

Stefan ⛄ F. schrieb:
> Python ist für die klassischen Mikrocontroller zu "fett". Das ist eher
> die Welt von PC und Raspberry Pi. Ganz neu ist hier der Raspberry Pi
> Pico. Der ist aber gerade erst auf den Markt gekommen, also wohl noch
> nicht ganz so Anfängerfreundlich, wie etablierte Mikrocontroller.

Ich fände es gut, wenn du keine Fehlinformationen verbreiten würdest. PC 
und der Raspberry Pi haben nicht im Ansatz was mit dem Pico zu tun, und 
sollten daher nicht im gleichen Atemzug genannt werden – wenn du den 
vergleichen willst, dann mit beispielsweise den ESP32-Boards. Auf denen 
läuft Micropython ebenfalls.

Und was die Einsteigerfreundlichkeit angeht, schlägt der Pico wohl jedes 
AVR-Board.

Nix für ungut, aber vielleicht solltest du deine Vorurteile bzgl. des 
Pico mal etwas zurückstellen, bis du dich tatsächlich selbst informiert 
hast?

von Stefan F. (Gast)


Lesenswert?

Jack, ich stimme dir zu, dass der Raspberry Pi nicht mit PC vergleichbar 
ist. Auch in meinen Augen ist das Ding ein Mikrocontroller.

Wobei ich wohl auch hätte erwähnen sollen, dass das dort verwendete 
MicroPython wie C vorher compiliert wird. Es sind dann also keine 
klassischen Scripte mehr.

Ich habe übrigens keine Vorurteile gegen das Ding. In der kurzen Zeit 
kann die Dokumentation unmöglich das Niveau von AVR Mikrocontrollern 
erreicht haben - um nur eine Familie aus der etablierte Konkurrenz zu 
nennen. Die Diskussionen hier im Forum bestätigen das.

Wer trotzdem Bock drauf hat: Bitteschön, warum nicht? Ich habe nichts 
dagegen, sonst hätte ich ihn nicht gerade empfohlen.

Ich habe mir auch den ESP8266 früh angetan, als es nur vorläufige 
Datenblätter auf Chinesisch gab und die Firmware in Version 0.1.x keine 
60 Minuten ohne Absturz durch laufen konnte. Also mache mir hier bitte 
keine falschen Vorwürfe.

von Jack V. (jackv)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wobei ich wohl auch hätte erwähnen sollen, dass das dort verwendete
> MicroPython wie C vorher compiliert wird. Es sind dann also keine
> klassischen Scripte mehr.

Vielleicht solltest du wirklich mal in die verlinkte Doku schauen? Der 
Interpreter ist natürlich kompiliertes C/C++, die Scripte selbst werden 
jedoch nicht explizit compiliert, wie bei C, sondern du schreibst dein 
Script wie ein ganz normales Pythonscript, speicherst es als ›main.py‹ 
in dem Dateisystem, das Micropython zur Verfügung stellt, packst ggf. 
noch deine Libs dazu (gerne auch ebenfalls als Textfiles mit der Endung 
.py) und ab dafür. Und du kannst quasi live über die serielle Verbindung 
mit dem Pythoninterpreter auf dem Board interagieren, wie in einer 
normalen Pythonshell. Du kannst dein Script zusammen mit Micropython 
in ein Binary „freezen“, aber du musst es eben nicht.

Aber ja – sollte keine Grundsatzdiskussion werden. Nur eben, dass der 
Pico nicht einsteigerfreundlich wäre, wollte ich richtiggestellt wissen. 
Ich meine: das Ding wurde nicht zuletzt mit Einsteigern als Zielgruppe 
entwickelt. Du hast Python und C/C++ zur Auswahl, du brauchst keine 
zusätzliche Hardware, die Doku ist ziemlich gut und es gibt bereits 
jetzt, zwei Monate nach dem Launch, eine ziemlich große und vor Allem 
aktive Community. Und was die aus dem Platinchen für 4,1€ rausholt, ist 
teils ziemlich erstaunlich – soll heißen: auch, wenn man nicht mehr 
Einsteiger ist, kann man damit viel Spaß haben.

von Stefan F. (Gast)


Lesenswert?

Ok, es sind doch Python Scripte. Ich habe da etwas durcheinander 
gebracht.

Kann es sein, dass das Board gerade überall ausverkauft ist?

von Jack V. (jackv)


Lesenswert?

Stefan ⛄ F. schrieb:
> Kann es sein, dass das Board gerade überall ausverkauft ist?

Der Händler meines geringsten Misstrauens hat noch über 4k auf Lager, 
gibt allerdings nur drei auf einmal ab: 
https://www.berrybase.de/neu/raspberry-pi-pico?c=2461

(@Moderation: hoffe, der Link ist okay – wenn nicht, bitte einfach 
löschen)

von Stefan F. (Gast)


Lesenswert?

Jack V. schrieb:
> hoffe, der Link ist okay

Klar sind links OK. Ich finde auch Werbung OK, sofern vorher danach 
gefragt wurde. Danke für den Tipp, der hat ja auch viele andere 
interessante Sachen.

Krass finde ich allerdings, dass sie nur 3 Pro Person abgeben, obwohl
sie tausende vorrätig haben.

Beitrag #6628188 wurde von einem Moderator gelöscht.
von Maxi W. (maxi_w)


Lesenswert?

Vielen Dank für euer Feedback!

ich werde mir erstmal ein Entwicklerboad zulegen.
Ihr habt wesentlich schneller geantwortet als ich dachte :D - ganz goßes 
Danke von mir! Ich werde mir erstmal die Informationen und Links 
einverleiben, die Ihr mir hier bereitgestellt habt und melde mich dann 
ggf. nochmal.

Vielen dank für euere Hilfsbereitschaft!

von J. V. (janvi)


Lesenswert?

Die Mittel der Wahl (für einen angehenden Mathematiker) sind bei diesem 
Problem zunächst eine Wahrheitstabelle zu machen. Du siehst damit auch, 
ob das mit einer reinen kombinatorischen Logik zu lösen ist oder ob du 
einen Zustandsautomaten benötigst.

Danach malt man ein KV-Diagramm und minimiert die Terme. Nach Belieben 
kann man das dann noch mit Hilfe von De-Morgan auf NAND oder NOR 
Gatterlogik reduzieren.

In diesem Zustand ist das Problem dann einwandfrei definiert. Ob man es 
in Hardware mit Logik Gattern auf einem Experimentierbrett, mit VHDL in 
einem CPLD oder mit irgend einer Sprache auf einem Mikrokontroller 
realisiert, ist dann eine völlig nebensächliche Frage die sich maximal 
in den Mikrosekunden der Reaktionszeiten auswirkt

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.