Der AVR-/ARDUINO-Faden

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

Dafür brauchen wir einen Schaltplan, um das bewerten zu können.
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Hightech hat geschrieben: Fr 26. Nov 2021, 13:01 Dafür brauchen wir einen Schaltplan, um das bewerten zu können.
Mache ich daheim in einer ruhigen Minute mal fertig.
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Also das Programm mit dem Timer läuft immer noch nicht wie es soll.

Denn es ist irgendwie egal, was ich als Zeiten eintrage.

Hier, vielleicht ja jemand den Fehler:

Code: Alles auswählen

#define ICPin 3 // Pin Einlesen IC
#define RelaisPin 5 // Pin Schalten Relais
long int timer=0;

void setup() {

  // put your setup code here, to run once
pinMode(ICPin, INPUT_PULLUP);
pinMode(RelaisPin,OUTPUT); 
digitalWrite (RelaisPin, HIGH);

 TCCR0A=(1<<WGM01);    //Set the CTC mode  
  OCR0A=0xF9; //Value for ORC0A for 1ms

  TIMSK0|=(1<<OCIE0A);   //Set the interrupt request
  sei(); //Enable interrupt

 

  TCCR0B|=(1<<CS01);    //Set the prescale 1/64 clock
  TCCR0B|=(1<<CS00);

}
void loop()
{
                //if (digitalRead(3)==HIGH)
               // {
                               if(timer>=10000)
                               {
              timer=0;
                                               digitalWrite (RelaisPin, LOW);
                               if(timer>=10000)
                               { 
               timer=0;
                               }
                                               digitalWrite (RelaisPin, HIGH);
}//}
                               ISR(TIMER0_COMPA_vect)
                               {    //This is the interrupt request
                               timer++;
                               }
Ich bin nach 3 Stunden davor sitzen nicht mehr in der Lage, irgendwas darin zu erkennen.
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

sorry, ich bin da zu faul zu. ich nehm einfach millis, oder wenn aus irgendwelche spezial Gründe nicht möglich, eine Timerone/two...Lib.
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Ohne jetzt das Programm zu testen, ich habe schlicht kein Umfeld dazu. Aber hier sind ein paar schlechte Angewohnheiten drin.
Oben wird ICPin und RelaisPin definiert. Später werden teilweise wieder numerische Angaben verwendet. Murks! Nach der Definition sind ausschließlich die definierten Konstanten zu verwenden. Sonst kann man sich diese nämlich sparen und nur auf Zahlen setzen. Nur wird der Code dann komplett unlesbar.
Die gewünschte Logik innerhalb von loop() ist nicht gegeben. Vermutlich sind Klammern entfernt worden und dann nach Syntaxmeckereien planlos ans Ende angefügt worden. Hier empfehle ich erneut den Einsatz des ursprünglichen Quellcodes - der muss mal funktioniert haben.
Die Lesbarkeit des Codes geht gegen Null, dabei sind das nur wenige Zeilen. Korrekte Einrückung und Klammerung sind für die Übersicht notwendig. Ein für die Programmierung geeigneter Editor kann dabei sehr helfen.
Ansonsten lernt es sich deutlich einfacher ohne Timer, viele Grundfunktionen brauchen den nicht. Register durchzählen und auswerten ist viel einfacher und besser zu durchschauen.

MfG. Andreas
Benutzeravatar
Fritzler
Beiträge: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler »

Ja, solch schlechten Code sieht man echt selten.

Es sollte wirklich BEVOR irgendwie weitergemacht wird ein Buch konsultiert werden.
Das führt sonst einfach zu nichts, da ist nichtmal das grundlegendste Verständnis der Klammersetzung vorhanden.
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Ich muss zur Ehrenrettung dazu sagen, dass das nicht mein Code ist.

Ich habe da mit wem per Mail Kontakt gehabt und wir haben uns den Code immer
hin und her gemailt und es gab nie einen wirklich funktionierenden Stand.

Tja, muss ich mir morgen mit gaaanz viel Muße nochmal rein tun.
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

du musst erstmal n vernünftigen editor haben. notepad++ zb. und den text formatieren. dauert eine Tastenkombination. im Grunde das gleiche was ich bei dem mathe Problem geschrieben hab. so wie oben stellst du dir selber ein bein.

edit. np++ hab ich schon ewig, nervt aber seit längerer Zeit. -> PSPad scheint ganz gut.
Zuletzt geändert von ch_ris am Sa 27. Nov 2021, 09:18, insgesamt 2-mal geändert.
Anse
Beiträge: 2278
Registriert: Mo 12. Aug 2013, 21:30
Wohnort: Bühl (Baden)

Re: Der AVR-/ARDUINO-Faden

Beitrag von Anse »

Cubicany hat geschrieben: Fr 26. Nov 2021, 14:17 Hier, vielleicht ja jemand den Fehler:
Es fehlt auf jeden Fall eine geschweifte Klammer zu. Sollte definitiv einen Syntaxfehler bringen.
Vielleicht ist die auch beim wilden Auskommentieren drauf gegangen.
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

Cubicany hat geschrieben: Fr 26. Nov 2021, 20:31 Tja, muss ich mir morgen mit gaaanz viel Muße nochmal rein tun.
Und? Hast die Fehler gefunden?
--------------------------
Ich will mir mal einen HV Fuse Doctor bauen um beim Tiny den Reset Pin nutzen zu können.
Wie ist das denn das bei einem verfusten Nano?
Ich las, man müsse zumindest den Quarz ablöten oder den 328p komplett auslöten.
Das macht das absurd für mich, dann brauch ich den entsprechenden Code nicht zu einzubauen.
(Von der Kontaktierungs-Problematik mal ganz abgesehen, aber das wäre noch irgendwie lösbar.)
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

ch_ris hat geschrieben: Di 7. Dez 2021, 10:22
Cubicany hat geschrieben: Fr 26. Nov 2021, 20:31 Tja, muss ich mir morgen mit gaaanz viel Muße nochmal rein tun.
Und? Hast die Fehler gefunden?
Ne, ich nicht, aber der, von dem das kam.

Da musste noch irgendwie ein Flag als Merker rein, mehr habe ich nicht verstanden.
Benutzeravatar
Weisskeinen
Beiträge: 3942
Registriert: Di 27. Aug 2013, 16:19

Re: Der AVR-/ARDUINO-Faden

Beitrag von Weisskeinen »

Code: Alles auswählen

...
if(timer>=10000)
{
	timer=0;
        digitalWrite (RelaisPin, LOW);
	if(timer>=10000)
        { 
        	timer=0;
        }
        digitalWrite (RelaisPin, HIGH);
...
Merkste was? Die zweite verschachtelte if-Abfrage wird nie aufgerufen (warum auch, timer ist ja schon aus Null gesetzt) und wird möglicherweise komplett weg optimiert. Und der Relais-Pin ist so kurz LOW, dass das Relais das nie und nimmer merkt. Was das soll, weiß ich nicht...

Edit: Wenn man variablen im Hauptprogramm und in einer Interruptroutine verändert, sollte man die übrigens noch als volatile deklarieren. Sonst können da ganz seltsame Sachen passieren, je nach Lust und Laune des Compilers...
Benutzeravatar
Toddybaer
Beiträge: 4704
Registriert: Sa 11. Jun 2016, 13:48
Wohnort: Hemmoor

Re: Der AVR-/ARDUINO-Faden

Beitrag von Toddybaer »

Nimmt man bei einem Arduino zur Datenübertragung nun GSM oder LTE Module?
Viele Daten sind das nicht.

LAN und W-LAN gis zwar auch noch, hab ich aber nicht überall zur Verfügung

Kann der Arduino bei einem Interrupt dann auch per Telefon nach hause telefonieren? Oder über einen Lautsprecher eine Sprachnachricht dudeln lassen? (Bleiben sie wo sie sind, die Polizei ist informiert, eine Videoaufnahme wurde gestartet)
Anse
Beiträge: 2278
Registriert: Mo 12. Aug 2013, 21:30
Wohnort: Bühl (Baden)

Re: Der AVR-/ARDUINO-Faden

Beitrag von Anse »

Toddybaer hat geschrieben: Mi 29. Dez 2021, 10:22 Kann der Arduino bei einem Interrupt dann auch per Telefon nach hause telefonieren? Oder über einen Lautsprecher eine Sprachnachricht dudeln lassen? (Bleiben sie wo sie sind, die Polizei ist informiert, eine Videoaufnahme wurde gestartet)
Also mit dem SIM800 Modul habe ich so Sachen schon gemacht. Ist ein schön günstiges Modul. Allerdings würde ich immer zum stillen Alarm raten. Entweder still oder so, das der Täter so einen Schreck bekommt, dass er nicht mehr rum schnüffelt.

Ich vermute mal Du willst was mit Bewegungsmelder machen. Darum der Hinweis: Fast alle im Handel erhältlichen PIR Sensoren arbeiten eher unzuverlässig neben Funkmodulen. Das einzige Modul, welches gut funktioniert, ist mit dem AM132. Wahrscheinlich weil dort die ganze Elektronik in der Blechbüchse integriert ist. Aber auch dort sollte die Versorgungsspannung gut gefiltert werden.
Benutzeravatar
Toddybaer
Beiträge: 4704
Registriert: Sa 11. Jun 2016, 13:48
Wohnort: Hemmoor

Re: Der AVR-/ARDUINO-Faden

Beitrag von Toddybaer »

Stiller Alarm ist schlecht, weil bis ich dann da bin, ist auch schon alles zu spät.

Ich dachte an Reedkontakten unter den Kisten. Als Öffner, alle in Reihe. Wenn jemand dann eine Kiste Hochnimmt, gibs Alarm.
Anse
Beiträge: 2278
Registriert: Mo 12. Aug 2013, 21:30
Wohnort: Bühl (Baden)

Re: Der AVR-/ARDUINO-Faden

Beitrag von Anse »

Ach so ist das. Dann aber vielleicht keine lächerliche Ansage. Eher eine 110 dB Tröte oder so was in der Art.
Oder die Kiste unter Spannung setzten. Harmlos natürlich aber sehr schmerzhaft.
Benutzeravatar
Bastelbruder
Beiträge: 11481
Registriert: Mi 14. Aug 2013, 18:28

Re: Der AVR-/ARDUINO-Faden

Beitrag von Bastelbruder »

Da muß ein (international verständliches) Warnschild mit Gummigesicht und Flasche innen an der Tür hängen. Plötzlich Licht aus, Spot an! Und aus einem unsichtbaren Lautsprecher: dit - - - - ditdit - - - ditditdit - - ditditditdit - diiii. Pschschsch ...
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

Code: Alles auswählen

((100/3.6)/(1.95))*(43/16)*26
= 995,37037037037037037037
das ist die Ausgabe vom PC calculator.
Auf dem Nano ausgeführt ergibt das glatt 1000, bzw 1000 ergibt 100.

Code: Alles auswählen

return ((((float) a/ ( b* c)) * d)* 3.6);
Alle Werte sind float ausser a, weiteres casten ändert nix.

das mir der Präzision hab ich schon mal gelesen, daher bin ich eh geizig mit float.
hier ist's mir "egal" das ist nur ein Nebenprojekt.

Anderes Problem hab ich mit dem Tiny gehabt.
Der Main Loop ruft eine Methode mit switch, die wiederum eine Methode mit switch aufruft.
Die Methoden setzen bzw. ändern ihren case innerhalb des switch.
Das gelang nicht und ergab eine Todesschleife.
Hab den Fehler im Code gesucht wie blöd, aber nix gefunden.
mit flacherer Verschachtelung ging's dann.
möglicherweise...ich hab den Flash gut ausgenutzt, 7+Kb von 8.
weis nich ob das damit was zu tun hat. Ram ist noch gut vorhanden.
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

Meine Arduinos sterben wie die Fliegen, wenn ich den Vin benutze. Entweder stirbt nur der Spannungsregler oder der legiert durch und der MC ist auch im Arsch!

Vin besser nicht nicht benutzen für Spannung größer 6V.
Benutzeravatar
Toddybaer
Beiträge: 4704
Registriert: Sa 11. Jun 2016, 13:48
Wohnort: Hemmoor

Re: Der AVR-/ARDUINO-Faden

Beitrag von Toddybaer »

Anse hat geschrieben: Do 30. Dez 2021, 13:46 Ach so ist das. Dann aber vielleicht keine lächerliche Ansage. Eher eine 110 dB Tröte oder so was in der Art.
Oder die Kiste unter Spannung setzten. Harmlos natürlich aber sehr schmerzhaft.
Schön wäre auch noch eine Drohne die irgendwo aus den Büchen abhebt und in 10m Höhe über den Bienenstand kreist. Vielleicht sogar mit Videokamera
Benutzeravatar
Später Gast
Beiträge: 1680
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

ch_ris hat geschrieben: So 2. Jan 2022, 07:17 ...
das mir der Präzision hab ich schon mal gelesen, daher bin ich eh geizig mit float.
...
Hast du da evtl nen Link zu?
Ich hab da n Projekt mit schneller und genauer Temperaturmessung, (840sps 16bit ballern in ein Array von 30 Werten, wenn der voll ist, wird der Schnitt ausgegeben, macht rauschfreie 28sps) die mit "double" arbeitet, was ja bei arduino wie float behandelt wird. Da hatte ich mal in der seriellen Ausgabe das runterdividieren vergessen und war über das häufige Auftauchen identischer Werte verwundert. Der PID Regler arbeitet auf +-1K genau, also tadellos, aber das Bessere ist der Feind des Guten. ;-)
Benutzeravatar
Später Gast
Beiträge: 1680
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Hightech hat geschrieben: So 2. Jan 2022, 09:19 Meine Arduinos sterben wie die Fliegen, wenn ich den Vin benutze. Entweder stirbt nur der Spannungsregler oder der legiert durch und der MC ist auch im Arsch!
Hatte ich bei ner Charge pro minis auch schon. Bei mir klassischer Fall von zu billig gekauft. Bei meinen steigt die Stromaufnahme mit der Eingangsspannung extrem an, was dann zur thermischen Überlastung führt. Resultat: Die Minis liegen wie Blei in der Sortierkiste. 🤷‍♂️
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

Später Gast hat geschrieben: So 2. Jan 2022, 14:18 Hast du da evtl nen Link zu?
nee, goock mal avr float precision.
ich denke das ist ein Fall von isso.
Benutzeravatar
Später Gast
Beiträge: 1680
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Hmm. Meinst du dashier:
.Floats have only 6-7 decimal digits of precision. That means the total number of digits, not the number to the right of the decimal point. Unlike other platforms, where you can get more precision by using a double (e.g. up to 15 digits), on the Arduino, double is the same size as float.
Das hab ich mir beim Schreiben angeschaut und sollte mir eigentlich keine Probleme machen, die Temperaturen sind nur dreistellig, bleiben drei Nachkommastellen, so genau wirds selbst mit der Schnittbildung eher nicht. Muss ich wohl nochmal meinen Stuhlgang konsultieren, als Möchtegernkoter kommt's schon vor, dass ich suboptimal rechnen lasse... :? :P
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: Der AVR-/ARDUINO-Faden

Beitrag von Bumbum »

Hallo,

ich habe heute eine mir unbekannte Zählweise bei einem Gerät entdeckt. Hier mal zwei paar Beispiele:

FF FF 01 --> 80 80 02
FF 80 02 --> 80 81 02

Kennt jemand so etwas und wenn ja: Wie dekodiert man das nach Dezimal?

Viele Grüße
Andreas
Anse
Beiträge: 2278
Registriert: Mo 12. Aug 2013, 21:30
Wohnort: Bühl (Baden)

Re: Der AVR-/ARDUINO-Faden

Beitrag von Anse »

Um was für ein Gerät handelt es sich? Und was meinst Du mit Zählweise?
Benutzeravatar
Weisskeinen
Beiträge: 3942
Registriert: Di 27. Aug 2013, 16:19

Re: Der AVR-/ARDUINO-Faden

Beitrag von Weisskeinen »

ch_ris hat geschrieben: So 2. Jan 2022, 07:17

Code: Alles auswählen

((100/3.6)/(1.95))*(43/16)*26
= 995,37037037037037037037
das ist die Ausgabe vom PC calculator.
Auf dem Nano ausgeführt ergibt das glatt 1000, bzw 1000 ergibt 100.

Code: Alles auswählen

return ((((float) a/ ( b* c)) * d)* 3.6);
Alle Werte sind float ausser a, weiteres casten ändert nix.

das mir der Präzision hab ich schon mal gelesen, daher bin ich eh geizig mit float.
hier ist's mir "egal" das ist nur ein Nebenprojekt.
Komisch, ich habe das mal mit diesem Rechner auf 32-Bit-Genauigkeit nachgerechnet: http://weitz.de/ieee/
und bin auf 995.3703 gekommen. Und auch bei 16-Bit-Genauigkeit komme ich immer noch nur auf 995.5. Da muss was anderes im Argen sein...
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

Stimmt, hab's für sich allein mal rechnen lassen, mit korrektem Ergebnis,
da muss im Code was verbogen sein. Danke für den Hinweis.
Tobi
Beiträge: 821
Registriert: So 11. Aug 2013, 16:52
Wohnort: Eschweiler

Re: Der AVR-/ARDUINO-Faden

Beitrag von Tobi »

Moin,
ich sitze gerade vor einem Tiny84a mit ATTinyCore in der Arduino IDE1.8.19.
Gewünscht ist es, mit dem Auslösen des Int0 den Pin7 (OCOB) auf 1 zu setzen und den Timer0 zu starten. Wenn der Timer den Vergleichswert in OCR0B erreicht hat, soll er den Pin7 wieder auf low setzen.
Laut dem Datenblatt müsste der Ausgang auch vom Timer überschrieben werden:
" • Bits 5:4 – COM0B1, COM0B:0: Compare Match Output B Mode
These bits control the Output Compare pin (OC0B) behavior. If one or both of the COM0B1:0
bits are set, the OC0B output overrides the normal port functionality of the I/O pin it is connected
to."
Die LED an Pin10 dient nur der Kontrolle der ISR, die funst auch. Jedoch setzt der Timer nie den Pin 7 wieder auf low zurück, warum? Wenn ich testweise Bit COM0B1 im Timerregister auf 1 setzte, und damit das toggeln aktiviere, toggelt er auch wie ich das erwarte. Grundsätzlich läuft der Timer also.
Wer kann helfen?

Code: Alles auswählen

bool led = 0;

void setup() {

  sei();                      //interupts aus

  pinMode(10, INPUT_PULLUP);  //interrupt eingang

  pinMode(7, OUTPUT);         //tiny pin 6, oc1b
  pinMode(10, OUTPUT);        //tiny pin 2, led

  GIMSK = _BV(INT0);          //ext interupt an int0, pin 5
  MCUCR = _BV(ISC01);         //interupt bei fallender flanke

  sei();                      //interrupts an
}



void loop () {

  TCCR0A = _BV(COM0B1) | _BV(WGM01);  // OC0B = 0 bei match + ctc mode
  TCCR0B = _BV(CS01) | _BV(CS00) ;    //vorteiler =8      
  OCR0A  = 0xff;                      //zählen bis 255
  OCR0B  = 0xff;                      //vergleichswert = 255
  GTCCR = _BV(PSR10) | _BV(TSM);      //timer sync mode + prescaler reset


  while (1) {
    digitalWrite(10, led);
  }  
}



ISR(INT0_vect)
{
  led = !led;             //debug led toggeln
  GTCCR = ~_BV(PSR10);    //start timer
  digitalWrite(7, HIGH);  //ausgang setzen
}
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Ich sehe keinen Befehl, der den Ausgang auf Low schaltet. Vergessen?

MfG. Andreas
Tobi
Beiträge: 821
Registriert: So 11. Aug 2013, 16:52
Wohnort: Eschweiler

Re: Der AVR-/ARDUINO-Faden

Beitrag von Tobi »

Das sollte der Timer machen, OCOB ist Pin7:
timer.PNG
Benutzeravatar
Weisskeinen
Beiträge: 3942
Registriert: Di 27. Aug 2013, 16:19

Re: Der AVR-/ARDUINO-Faden

Beitrag von Weisskeinen »

Eine Lösung habe ich jetzt auch nicht, aber der Programmierstil ist seltsam. In loop() gehört nur noch das, was dauernd ausgeführt werden soll, sonst nichts. Die Timer-Einstellung gehört noch in setup(). Wenn außer den Interrupts nichts ausgeführt wird, bleibt die Funktion loop() eben leer. Ganz besonders gehört da keine weitere Endlosschleife rein.
Tobi
Beiträge: 821
Registriert: So 11. Aug 2013, 16:52
Wohnort: Eschweiler

Re: Der AVR-/ARDUINO-Faden

Beitrag von Tobi »

Ja, das stimmt wohl. Das kommt daher das der Hauptteil des eigendlichen Programms testweise rausgeflogen.
Zwei Sachen sind mir jetzt selber aufegafallen:
-Im Setup steht zweimal sei() anstatt cli(), copy-paste Fehler
-Ich kann den OC0B nicht über das PORTB Register setzen, weil der Pin in diesem Fall komplett von diesem abgetrennt ist

Stattdessen konfiguriere ich nun den Timer in der ISR als "set OC0B on match" und setze dann das FOC0B-Bit. Damit wird ein match erzwungen und OC0B wird auf 1 gesetzt.
Dann setze ich den Timer wieder auf "clear OC0B on match" und starte den Timer. Aber der Timer setzt den Pin nicht zurück :(
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

SPI-DAC gesucht, günstig bitte

Beitrag von Hightech »

Moin,
ich suche einen günstigen SPI-DAC, so was wie den LTC1286, aber in bezahlbar.
Weiß da jemand was günstiges oder hat gar zu viele und möchte die gerne verkaufen ?

ich tausche auch gerne gegen AD558 ;)
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Ein LTC1286 ist aber ein ADC?

Was soll es denn nun sein, was für Anforderungen, was für eine Anwendung,...?
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

IPv6 hat geschrieben: Sa 12. Mär 2022, 22:31 Ein LTC1286 ist aber ein ADC?

Was soll es denn nun sein, was für Anforderungen, was für eine Anwendung,...?
Ach, shit. Ein DAC soll es sein.

Der AD558 hat zum Beispiel einen Verstärker mit eingebaut, so das man prima eine beliebige Ausgangsspannung bekommt.
So etwas wäre gut.
10-12 Bit reichen mit völlig, es soll ja nur eine Steuerspannug erzeugt werden.

Obwohl ein 10k SPI-Poti IC wäre ja auch praktisch.
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

So wirklich folgen kann ich dir immer noch nicht.
Wenn ein AD558 gut wäre, wieso bietest du den dann zum tausch an?

Eine sich nur langsam ändernde Steuerspannung erzeugst du am einfachsten mit einer tiefpassgefilterten PWM vom Microcontroller.
Hinten den PWM Ausgang kommt dazu ein passendes RC Glied und ein LM358. Der erste OPV als Spannungsfolger um das RC Glied nicht zu belasten, der zweite OPV verstärkt dann auf deine Wunschspannung wenn z.B. ein 0-10 V Signal gefragt ist.
Sollte das einfache RC Glied nicht gut genug filtern kann man das Filter auch steilflankiger als Sallen-Key um den OPV aufbauen.

So habe ich schon einige Umsetzer für DMX auf 0-10 V gebaut, funktioniert wunderbar solange sich die Steuerspannung nur einigermaßen träge ändert.
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

IPv6 hat geschrieben: So 13. Mär 2022, 00:20 So wirklich folgen kann ich dir immer noch nicht.
Wenn ein AD558 gut wäre, wieso bietest du den dann zum tausch an?
Weil das ein DAC mit 8-Bit Bus ist.

Ich wollte einen SPI oder I2C DAC, weil ich mit dem Timer auf Kriegsfuß stehe. Aber vielleicht versuche ich das doch mal mit Tiefpass und OP.
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Stimmt, der AD558 versteht kein SPI.

Versuch das mal mit einer gefilterten PWM. Mir hat damals die ultrasimple Ausführung mit Filter 1. Ordnung gereicht, aber ich stelle gerade fest, dass mit etwas mehr Bauteilaufwand (4 Widerstände, 4 Kondensatoren) und dem Dual-OPV ein Filter 4. Ordnung möglich gewesen wäre. Damit sollte die Ausgangsspannung mehr als ausreichen glatt werden.
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

IPv6 hat geschrieben: So 13. Mär 2022, 00:32 Stimmt, der AD558 versteht kein SPI.

Versuch das mal mit einer gefilterten PWM. Mir hat damals die ultrasimple Ausführung mit Filter 1. Ordnung gereicht, aber ich stelle gerade fest, dass mit etwas mehr Bauteilaufwand (4 Widerstände, 4 Kondensatoren) und dem Dual-OPV ein Filter 4. Ordnung möglich gewesen wäre. Damit sollte die Ausgangsspannung mehr als ausreichen glatt werden.
Ja, üben, üben, üben.
Ich muss mal einen Filter bauen. Eine einfache RC-Kombination ist furchtbar ungeeignet als Ausgang für einen 0-10V Frequenzumrichter.
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Furchtbar ungeeignet ist das sicher nicht, wenn das Signal mit einem OPV gepuffert wird. Aber muss ja eh sein wenn es 0-10 V braucht.
Da sich mein Signal nur recht langsam änderte hatte das RC Filter eine Grenzfrequenz von 1 Hz. Der Arduino macht typischerweise eine PWM mit ca. 500 Hz. Die Grundschwingung der PWM wird dann schon um etwa Faktor 500 gedämpft. Die wenigen mV Restwelligkeit werden den FU Eingang wohl auch nicht stören.
vobs
Beiträge: 72
Registriert: Sa 6. Aug 2016, 09:42
Wohnort: 70771 Echterdingen
Kontaktdaten:

Re: SPI-DAC gesucht, günstig bitte

Beitrag von vobs »

Hightech hat geschrieben: Sa 12. Mär 2022, 22:06 ich suche einen günstigen SPI-DAC, so was wie den LTC1286, aber in bezahlbar.
Microchip hat da eine nette Auswahl, z.B.
MCP4901/4911/4921 oder MCP4921/4922 oder MCP4802/4812/4822.
Habe ich vor ein paar Jahren mal bei Reichelt bestellt, die sollten also nicht so schwer zu beschaffen sein.
Ob die jetzt mit Deinem ADC vergleichbar sind, musst Du selber beurteilen, mirr fehlen da die Kriterien.

Grüßle
Volker
Benutzeravatar
Alexander470815
Beiträge: 2371
Registriert: So 11. Aug 2013, 15:42
Wohnort: D:\Hessen\Gießen

Re: Der AVR-/ARDUINO-Faden

Beitrag von Alexander470815 »

Man könnte sich wohl auch die 10V die der FU selber raus gibt schnappen und mit dem Microcontroller zwei Optokoppler bespaßen.
Die Optokoppler schalten dann zwischen GND und 10V hin und her, noch ein Tiefpass dahinter und schon hat man die 0-10V oder halt 0,5V-9,5V aber das kann man ja skalieren im FU.
Nebenbei hat man das ganze auch noch gegeneinander isoliert.

Manche FUs können auch ein Frequenzsignal als Sollwertquelle verarbeiten, das lässt sich ja auch recht einfach erzeugen.
Für genügend Bandbreite kann man die PWM ja ein bisschen schneller machen als das was Arduino von alleine mitbringt...
Unbenannt.jpg
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

Schade, die standart DACs können am Ausgang alle nur 5,5V.
Die anderen gibt es auch, aber dann zu Mondpreisen.

Im Moment gebe ich die PWM auf einen Transistor, welcher einfach die 10V über einen Widerstand auf 0V zieht.

Ich muss da mal einen aktiven Tiefpass hin bauen, denn so ist das furchtbar unlinear.
Benutzeravatar
Fritzler
Beiträge: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler »

Um einen Opamp mit 12 bis 15V Versorgung wirste nicht wirklich drumrum kommen.
Der ist dann direkt Verstärker und Tiefpass 2. Ordnung.

Die Herren Sallen und Key lassen grüßen:
http://sim.okawa-denshi.jp/en/OPseikiLowkeisan.htm

Eine Verstärkung gibts wenn der Opamp nicht als Spannungsfolger betrieben wird.
(runter scrollen bem Link, dann gibts auch dafür nen Berechner)
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

hab gerade BurnOmat 2.2.0 auf LMDE4(linux mint) installiert.
Bei den avrdude options ist die programmer option leer, gibt nix zur auswahl.
avrdude (6.3) problem? fehlt da eine Lib?

edit. die pfade waren verbogen, ach Linux...
das ach ist mehr der ungewohnten Ordnerstruktur geschuldet, alles einfach lösbar...
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

Mit einem TS912 R2R OP hab ich meine 0-10V bei 490Hz eigentlich schön raus bekommen.
Der wird mit 12V bespielt.


Bild
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

ich benutze zwei wege einen nano zu programmieren.
Sloeber IDE, die letzlich die Arduino umgebung /avrdude benutzt, sollte also gleich sein.
manchmal klappt es nicht, ich muss dann die andere 328p Option benutzen (old bootloader ja/nein), ja nach nano.
oder
mit dem Fon mittels app: Arduino Hex Upload. hier das gleiche Spiel, nur das keine old bootloader Option da ist.
wenn ich stattdessen Uno wähle, klappt der upload.
Programm läuft auch. Nano/Uno egal?
oder doch nur scheinbar? kann das irgendwelche Probleme machen?
bin verunsichert weil die IDE bei Wechsel der Option komplett neu kompiliert.
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Das hängt mit dem Bootloader zusammen.
Für die Nanos wurde der 2018 mal auf Optiboot umgestellt, der ist kleiner und arbeitet mit einer höheren Baudrate.
Der Chinese liefert seine Nanos aber immernoch mit dem alten Bootloader aus, daher muss für die billigen Klone meist die "old bootloader" Option ausgewählt werden.
Mit was für eine Bootloader der Uno daherkommt weiß ich nicht auswendig, scheinbar aber mit dem gleichen, der auch auf so manchen Nanos daherkommt, sonst würde der Upload bei dir nicht klappen.

Da Uno und Nano die gleichen Controller nutzen ist es im Prinzip egal, mit welcher Option du dein Programm hochlädst.

Wenn du es "schön" machen willst kannst du auch auf deine Boards den neuen Bootloader spielen, dazu brauchst du nur einen ISP Programmer (oder einen zweiten Arduino, der als ISP Schnittstelle verwendet wird).
Dann kannst du auf die "old bootloader" Option verzichten und hast die Vorteile von Optiboot (die aber zugegebenermaßen oftmals eher nicht so entscheidend sind).
Benutzeravatar
Später Gast
Beiträge: 1680
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Der Nano hat glaub paar mehr pins, wenn die benutzt werden müsste der kompiler meckern bei uno als eingestelltes Board?

Sonst: wenns läuft, läufts?
Vllt für sicherheitskritische Sachen nur den PC nehmen, oder halt lernen wie man bootloader brennt und alle Boards bei Erhalt auf den neuen umflashen.
Antworten