Systemberatung

Programmierung und Hardwaredesign mit AVR, PIC und Konsorten.

Moderatoren: ebastler, SeriousD, MaxZ

Antworten
Nachricht
Autor

Thread-Ersteller
Lightsource
Beiträge: 123
Registriert: Sa 11. Jan 2014, 20:26

Systemberatung

#1 Beitrag von Lightsource »

Hi.

Vor vielen Jahren hatte ich mich schon einmal mit Hardware an Computern beschäftigt.
Das war noch ein Apple 2e oder ein Atari St. ;) Also die Programmierung eines
Interfacebausteins in Assembler etc.

Was ich suche ist ein System, an das man die meisten Sensoren anschließen kann.
Es muss natürlich schnell sein, also auch mehrere Sensoren und vielleicht grafische Ausgabe beherrschen.
Also mehr in Richtung Messgerät.
Programmiertechnisch einfach aufgebaut, ich möchte nicht erst 30 Treiber und verschiedene Systemschichten
initialisieren. Raspberry ist mir z.B. viel zu kopflastig.

Da ich über den heutigen Stand der Technik auf diesem Gebiet nicht viel Ahnung habe, wollte ich mal fragen,
ob mir hier jemand (Kauf) Tipps geben kann?

Benutzeravatar

VDX
Beiträge: 978
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Danksagung erhalten: 127 Mal

Re: Systemberatung

#2 Beitrag von VDX »

... für den Raspi gibt es schon einige Projekte und Tools, um den als Meßgerät zu verwenden.

Ansonsten geht einiges mit den 32Bit-Arduinos (ich verwende meist den ArduinoDue) ... oder Teensy3.6 und größer ... oder STM32F4-Boards ...

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425


Thread-Ersteller
Lightsource
Beiträge: 123
Registriert: Sa 11. Jan 2014, 20:26

Re: Systemberatung

#3 Beitrag von Lightsource »

Ich finde nur den Überbau beim Raspi etwas zu viel.

Die anderen Sachen die du erwähnt hast...
Welche Unterschiede gibt es da?
Werden die alle per PC über USB programmiert?
Welche Sprache wird verwendet?
Was braucht man am PC?
Gibt es für PC Simulationen?
Wie schnell sind die Teile?
Wie breit ist der Datenbus zu den Sensoren?

Da gibt es noch viele Fragen ;)

Wenn ich mir diese Teile in den Katalogen anschaue, werde ich eher von den Infos erchlagen.
Dann gibt es scheinbar auch noch verschiedene Baugrößen etc. Da weiß ich nicht, wo ich da anfangen soll.
Soll ich mir so ein Arduino Lernpaketkit kaufen?

Benutzeravatar

Death
Beiträge: 246
Registriert: Sa 14. Jul 2018, 05:56
Spezialgebiet: CO²-Laser
Schule/Uni/Arbeit: Elektroinstallateur
Wohnort: Duisburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 24 Mal

Re: Systemberatung

#4 Beitrag von Death »

Hast du dir den mal einen Kopf gemacht, was für Signale von den Sensoren kommen sollen ?

Es gibt ja jede Menge dieser I²C Sensoren. Als ich noch GLT beruflich gemacht habe, haben wir viel Analoge Sensoren verarbeitet, sowie 2 / 4 Leiter aber auch RS485 wurde verarbeitet. Zähler haben meist einen Optokopplerausgang oder M-Bus gehabt.

Benutzeravatar

VDX
Beiträge: 978
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Danksagung erhalten: 127 Mal

Re: Systemberatung

#5 Beitrag von VDX »

... wenn du relativ "simpel" einsteigen willst, dann empfehle ich dir dich erstmal auf den ArduinoDue einzulassen -- der läuft zwar "nur" mit 84MHz Taktfrequenzen (der Teensy mit 200MHz), mit knapp 1MHz Konversionsrate bei 10Bit (bis 12Bit?) ADC solltest du für die meisten Sachen aber schon hinkommen ;)

Schau mal hier für ein paar Infos - http://www.djerickson.com/arduino/due_adc.html

Programmiert werden die entweder über die Arduino-IDE einfach per USB-flashen, oder auch über andere "proffessionelle" IDE's und tools.

Die 32Bit-Teensys sind zwar schneller und neuer, da hats aber noch nicht so viele Projekte damit, so daß zu zum Due mehr findest ...

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425


Thread-Ersteller
Lightsource
Beiträge: 123
Registriert: Sa 11. Jan 2014, 20:26

Re: Systemberatung

#6 Beitrag von Lightsource »

Und wie ist es beispielsweise mit Ausgabe über USB?
USB braucht doch im Allgemeinen spezifische Treiber, die den Hersteller und den Gerätetyp übertragen.
Sind dann solche Treiber mit on Board, oder müsste man solche Sachen selbst programmieren?
Das gilt ebenso für RS485. Ich hatte zwar schon mal solch ein serielles Interface programmiert, aber Spaß
hat es nicht besonders gemacht.
Auch ADC und DAC hatte ich früher schon mal programmiert. Wie tief geht denn die Programmierung
bei diesen Arduinos, werden da die Pins dieser Chips per Software gesetzt, oder läuft das über Treiber,
oder ergibt sich das über das Bus-System?
Bei der Geschwindigkeitsfrage geht es mir eher darum, ob man mehrere Sensoren "gleichzeitig"
abfragen kann. Wenn dann noch eine USB-Ausgabe mitlaufen soll, könnte es doch schon etwas
langsamer werden?
Gibt es Arduino-Simulatoren, die vollständig auf dem PC laufen?

Benutzeravatar

VDX
Beiträge: 978
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Danksagung erhalten: 127 Mal

Re: Systemberatung

#7 Beitrag von VDX »

... die Kommunikation vom/zum Arduino erfolgt praktisch über RS232 - um es auf USB umzusetzen sitzt ein USB-RS232-Konverter-Chip mit auf der Platine ... aktiv vom Due aus nach Außen hat's mehrere Rx/Tx-Pins schon vorderfiniert, sonst gehts per "Software-Serial"-Libraries ... ansonten hat's noch ein paar andere serielle Protokolle wie SPI, I²C, CAN ...

ADC/DAC kannst du standardmäßig über "1-Zeiler" abrufen bzw. setzen -- für schnellstmögliche Auswertung kann das aber noch manuell optimiert werden ...

Bei Abfrage mehrer Sensoren geht das natürlich nur "nacheinander" und USB/Seriell wird da auch noch Zeit brauchen -- kommt also darauf an, was und wieviel du brauchst?

Ansonsten einfach mal durch die Specs lesen und ein paar Projekte kennenlernen (hat auch ganz viele Beispiele schon mit in der IDE dabei) ...

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425


Thread-Ersteller
Lightsource
Beiträge: 123
Registriert: Sa 11. Jan 2014, 20:26

Re: Systemberatung

#8 Beitrag von Lightsource »

Ich habe jetzt gelesen, dass dieser Arduino an seinen Eingängen mit 3.3V arbeitet.
Reicht da jeweils eine Zenerdiode aus? Das gibt doch Verluste und Signalveränderungen, oder?

Benutzeravatar

VDX
Beiträge: 978
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Danksagung erhalten: 127 Mal

Re: Systemberatung

#9 Beitrag von VDX »

... kommt immer auf deine Anwendung an - bei mir laufen die Dues mit "Levelshiftern" bzw. Zwischenplatinen mit 5V oder 24V and den I/O-Pins oder 0-5V bis 0-10V an ADC und DAC ;)

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425


Thread-Ersteller
Lightsource
Beiträge: 123
Registriert: Sa 11. Jan 2014, 20:26

Re: Systemberatung

#10 Beitrag von Lightsource »

Danke für diese Info. Das heißt, zum Arduino müssen noch andere Sachen dazu gekauft werden...
Was braucht man noch alles, um überhaupt zu einem funktionierenden System zu kommen?

Benutzeravatar

Count-Doku
Beiträge: 444
Registriert: Mi 26. Jun 2013, 15:44
Schule/Uni/Arbeit: IST-Student (TUBS)
Hat sich bedankt: 30 Mal
Danksagung erhalten: 57 Mal

Re: Systemberatung

#11 Beitrag von Count-Doku »

Da du nicht wirklich sagst, wie oder welche Sensoren du da anschließen willst ist es schwierig zu sagen, wie viel noch dazu kommt.

Wenn du nur Sensoren über I2C oder SPI anbinden willst, reicht vermutlich jeder Arduino (es gibt auch welche mit 5V IO). Dazu gibt es jede Menge Sensoren / Aktoren / Displays etc. in mehr oder weniger guten Shields/Modulen. Schau dich dazu einfach mal auf der Adafruit oder Arduino Seite um.

Auf Arduino Basis zum Beispiel:
Arduino Mega 2560: Vieeeeeele I/O Ports, auch viel Analog und PWM. Ausreichend Kommunikation: https://store.arduino.cc/arduino-mega-2560-rev3
Luftdaten (Temperatur, Druck, Feuchtigkeit) z.b. BME280 (von Bosch): https://learn.adafruit.com/adafruit-bme ... r-breakout
Display 1.8" Farbe : https://www.adafruit.com/product/358
Displays gibts auch mit Touch: https://smile.amazon.de/gp/product/B0749N3S33/
Für I2C und SPI gibt es halt alles an Sensorik, auch Lage (Gyro, Accel, Magnetometer), Helligkeit etc.

Wenn du mehr in Richtung 12V / 24V gehen willst, brauchst du halt entsprechende Levelshifter / Relaiskarten dazu. Wenn du viel Analog machen willst evtl. DAC/ADC.

Wenn es professionell werden soll, und du keine genaue Vorstellung deiner Sensoren hast, denk vielleicht auch an eine SPS. Da gibt es einige Einsteigerkits, die man (das nötige Kleingeld vorausgesetzt) auch gut erweitern kann. https://www.reichelt.de/logo-8-td-start ... ol_7&nbc=1


Thread-Ersteller
Lightsource
Beiträge: 123
Registriert: Sa 11. Jan 2014, 20:26

Re: Systemberatung

#12 Beitrag von Lightsource »

Count-Doku hat geschrieben:
Di 28. Jul 2020, 06:49
Da du nicht wirklich sagst, wie oder welche Sensoren du da anschließen willst ist es schwierig zu sagen, wie viel noch dazu kommt.
Das liegt daran, dass ich noch keine Ahnung habe. Aber als erstes Projekt dachte ich an einen Abstandsmesser mit Ultraschall.

Läuft eigentlich der Takt zu der Peripherie synchron zum Prozessor, also mit gleicher Taktrate?
Muss man auf einen Messwert warten, oder gibt es da ein Eventsystem oder Interupts?

Benutzeravatar

VDX
Beiträge: 978
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Danksagung erhalten: 127 Mal

Re: Systemberatung

#13 Beitrag von VDX »

... da immer vom Systemtakt "heruntergeteilt" wird, läuft das zumindest "harmonisch".

Je nach Analog- oder I/O-Pin bzw. Sensor-Bus ist das durchaus unterschiedlich -- es hat auch viele "intelligente" Sensoren, die über Kommunikation und Register angesprochen/ausgelesen werden.

Einen Ultraschall-Entffernungssensor haben wir beim c't-Bot-Projekt (um 2005 herum) schon mit einem Vorläufer der kleinen 16Bit-Arduinos (Atmega128 mit 16MHz) ausgelesen, um einen Gegenstand oder eine Wand im Abstand von 10cm bis 1m mit einigen Millimetern Genauigkeit zu erkennen und ggf. ausweichen zu können ;)

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425

Benutzeravatar

MaxZ
Beiträge: 1024
Registriert: So 28. Jun 2015, 10:20
Schule/Uni/Arbeit: Mechatronik, Karlsruher Institut für Technologie
Wohnort: Luxemburg / Karlsruhe
Hat sich bedankt: 160 Mal
Danksagung erhalten: 110 Mal

Re: Systemberatung

#14 Beitrag von MaxZ »

@Lightsource ich würd empfehlen dir ein paar der zahlreichen Tutorials zu Mikrocontrollern und Sensorik anzuschauen. Wenn du nach "Eventsystem oder Interrupts" fragst, denke ich, sollten es keine Arduino Tutorials sein, da die nicht viel tiefer als "Der Sensor wird mit mySensor.getValue aus der SensorSoUndSo Bibliothek ausgelesen" gehen dürften... Dies bedeutet auch, dass die meisten Arduino Bibliotheken kaum mit Interrupts arbeiten sondern stets abwarten. Arduino ist einfach, nicht effizient.
Ich persönlich bin bei den Mikrocontrollern von Texas Instruments gelandet; die STM32 Reihe scheint ebenfalls weit verbreitet zu sein. Beide sind ARM Cortex M4 basiert und recht ähnlich soweit ich weiss. Da diese weniger auf den Maker abzielen, sind die meisten Tutorials und Unterlagen etwas tiefgreifender.

Allgemein ist es so, dass die Kommunikation mit irgend einem Gerät deutlich langsamer läuft als die Taktfrequenz. I2C z.B. läuft üblicherweise bei 100kHz oder 400kHz, während die Taktfrequenz eher bei 20-150MHz liegt. Daher hat der Mikrocontroller üblicherweise Sende- und Empfangspuffer. D.h. du klatschst deinen Befehl den du senden möchtest dort rein, und während die CPU wieder frei ist für sonstiges, kümmert sich die Peripherie drum, dein(e) Byte(s) bei 100kHz rauszuschicken. Üblicherweise gibt es für alle kritische Situationen wie "Wert gesendet", "Wert empfangen", "Fehler XXX" ein Interrupt Flag, das im entsprechenden Fall gesetzt wird.
Wie du mit dem Flag umgehst ist dir überlassen. Du kannst entweder ein Interrupt dadurch auslösen lassen, und somit wirklich asynchron arbeiten, oder du deaktivierst die Interrupt-Funktion für dieses Flag, und wartest einfach ab bis es gesetzt wird.

Liebe Grüße,
Max


Thread-Ersteller
Lightsource
Beiträge: 123
Registriert: Sa 11. Jan 2014, 20:26

Re: Systemberatung

#15 Beitrag von Lightsource »

Gut, dann were ich mich mal noch weiter einlesen.
Falls noch Fragen kommen, weiß ich ja, dass hier einige sind, die sich auskennen.

Antworten