Hallo,
Ich muss einem Arduino NANO V3 über den analog Pin eine Spannung vermitteln was ich mit einem zweiten Arduino bewerkstelligen muss.
Im Prinzip keine große Tragik ich könnte über ein Filter von dem Sende Arduino PWM´s auf den analogen Eingang des Empfänger Arduino schicken.
Aber das ist mir zu ungenau.
Der Empfänger Arduino ist mit C- Programmiert und steuert zwei Schrittmotor Treiber über 2 Poti´s. ( Ich kann nicht C-Programmieren und der Atmega328 ist mit der Frequenz ausgelastet )
Diese Poti´s will ich mit einem zweiten Arduino ersetzten.
Dabei will ich die maximale Genauigkeit das heißt wenn ich ein Wert zwischen 0-1024 übermittle sollen dabei keine Schwankungen auftreten und immer wieder wiederholbar sein.
Gibt es eine Möglichkeit dem Atmega328 Chip ein analogen Wert „ vorzugaukeln “ ohne den ihn umzuprogrammieren ?
Damit ich eine genaueren Steuer wert bekommen !
Dogger330:
Der Empfänger Arduino ist mit C- Programmiert und steuert zwei Schrittmotor Treiber über 2 Poti´s. ( Ich kann nicht C-Programmieren und der Atmega328 ist mit der Frequenz ausgelastet )
Der Arduino wird doch immer in C programmiert. Egal, was du mit dem zweiten Arduino machen willst, du kommst um C nicht herum.
Ich komme mit Arduino Programmierung komme ich zurecht.
Aber Das C Programm mit den Timer zu verändern ist für mich ein Buch mit 7 Siegeln.
In das C-Programm ein Arduino loop zu bekommen ist mit Problemen behaftet daher habe ich für mich ausgeschlossen daran etwas zu verändern.
Ich hatte gehofft es gibt eine Hintertür mit der man den analogen Pin beeinflussen kann.
Dogger330:
Ich komme mit Arduino Programmierung komme ich zurecht.
Dann leg mal los.
Aber Das C Programm mit den Timer zu verändern ist für mich ein Buch mit 7 Siegeln.
In das C-Programm ein Arduino loop zu bekommen ist mit Problemen behaftet daher habe ich für mich ausgeschlossen daran etwas zu verändern.
Ich hatte gehofft es gibt eine Hintertür mit der man den analogen Pin beeinflussen kann.
Dann muss ich mir so was nicht immer aus den Foren rausklauen, muss mir nicht so Sprüche anhören und kann selber Unerfahrene auf die Schippe nehmen. Aber mit dem digital einstellbare Potentiometer schaue ich mir mal an !Nur habe ich keine Lust auf das Bauteil zu warten und dann weiter zu machen.
@gregorss
Danke
Dann bau ich jetzt ein möglichst guten tiefpassfilter und versuche mein Glück.
Wenn es nicht reicht setze ich noch ein P(ID)-Regler dran mit dem ich die Messfehler ausbügle.
uwefed:
Den Sketch wirst Du schon ändern müssen.
Benutz eine digitale Schnittstelle zur Datenübertragung.
Grüße Uwe
Würde ich ja gerne aber ich habe keine Ahnung wie ich das auf dem „C-Arduino“ programmieren kann.
Ich bin beim Timer schon so was von auf die Schnauze gefallen, mit der Annahme das ich mit dem Arduino Wissen da etwas verändern kann bzw. mal 1-2 Stunden was durchlese und dann das schon hinbekomme.
Dogger330:
Ich bin beim Timer schon so was von auf die Schnauze gefallen, mit der Annahme das ich mit dem Arduino Wissen da etwas verändern kann bzw. mal 1-2 Stunden was durchlese und dann das schon hinbekomme.
Mach Dir nichts draus. Ich prügle mich seit 8 Jahren mit C.
Ich glaube, dass Du das, was Du möchtest, am schnellsten hinbekommst, wenn Du Messwerte nicht per AD-Wandlung irgendeiner Art kommunizierst, sondern im „Klartext“ über die seriellen Schnittstellen. Wenn Arduino A $dingsda misst, meldet er eben $dingsda an Arduino B.
Du kannst dein Glück mit einem elektronischen Poti oder einem DAC versuchen. Der pcf8591 wäre ein günstiger, allerdings nur mit 8bit Auflösung. Ich bezweifle aber, dass man mit einem höher auflösenden viel genauer den Eingang eingestellt bekommt. Analoge Signale sind immer leichten Schwankungen unterworfen, wenn man nicht sehr sorgfältig und mit viel Sachverstand eine Schaltung aufbaut.
Du musst ansonsten in dem C-Programm die Stelle finden, wo das Poti ausgelesen wird und das gegen die Werte von einer anderen Schnittstelle eingelesene Werte ersetzen.
Das mit dem Timer hat mich 2 Feierabende gekostet und ich bin nicht weitergekommen. :o >:(
Ich bin nicht so überzeut von der Lösung jetzt auf den „C Arduino“ ein seriellen Schnittstellen einzurichten. Auf dem Arduino auf dem auch ein Arduino Programm läuft wäre das kein Problem.
Dogger330:
Das mit dem Timer hat mich 2 Feierabende gekostet und ich bin nicht weitergekommen. :o >:(
Ich bin nicht so überzeut von der Lösung jetzt auf den „C Arduino“ ein seriellen Schnittstellen einzurichten. Auf dem Arduino auf dem auch ein Arduino Programm läuft wäre das kein Problem.
WTF musst Du einrichten, um serielles Klartext-Getratsche zu ermöglichen?!
Wenn RX und TX belegt sind, okay, dann hast Du vielleicht ein bisschen Arbeit, das mit anderen Pins auf die Reihe zu bekommen, aber für „5 V“ hin und „verstanden“ her musst Du wirklich nicht viel lernen.
Wenn Du allerdings etwas dagegen hast, Neues zu lernen, bitteschön ...
Hab ich natürlich nicht !
Wenn du mir sagen kannst das es ¼ so schwer ist wie ein Timer a und b zu programmieren versuche ich es . Habe nur gemerkt das es verdammt schwer als Quereinsteiger mal kurz was in C zu programmieren wenn es mehr als 10 Zeilen haben soll.
In Arduino programmierst du auch nur C/C++! Da ist aber eine Sammlung aus Bibliotheken dazwischen, die für die meisten grundlegenden Aufgaben fertige Klassen und Funktionen anbietet.
Was du meinst ist wirklich direkt auf der Hardware zu programmieren. Im Englischen gibt es dafür den Begriff "on the metal". Das ist deshalb schwer, weil man wissen muss wie der Prozessor arbeitet und wie man dessen Register konfiguriert. Aber nicht weil es C ist.
Dass dir die Arduino Software diese Arbeit abnimmt und dich eine Ebene über die Hardware stellt ist der Grund weshalb sie für Anfänger so attraktiv ist. Wie man in diesem Forum aber immer wieder sieht kommt man bei bestimmten Problem trotzdem nicht darum herum.
Ich würde auch sagen, dass serielle Kommunikation hier einfacher wäre. Und auch logischer für sowas.
Dogger330:
Habe nur gemerkt das es verdammt schwer als Quereinsteiger mal kurz was in C zu programmieren wenn es mehr als 10 Zeilen haben soll.
Ja, sich anstrengen ist anstrengend (eine uralte Indianerweisheit, die ich mir neulich ausgedacht habe).
Als ich mit dem Computern anfing, was ein paar Jahrzehnte her ist, hat es ein paar Tage gedauert, bis ich verstanden habe, was programmieren wirklich bedeutet und wie es funktioniert. Und mit einem Konzept wie Rekursion kann ich mir auch heute noch jederzeit einen Knoten ins Hirn machen.