Labortagebuch November 2021

Elektronik-Labor  Notizen  Projekte  Labortagebuch


24.11.21: Diodenkennlinie eines Transistors



Diese interessante Untersuchung stammt von Manfred Bromba, der auf seine Seite den streng logarithmischen Verlauf einer Transistordiode verfolgt hat. Es ging dabei um die Weiterentwicklung meines logarithmischen Picoamperemeters. Ich hatte einen JFET verwendet, er hat ersatzweise einen NPN-Transistor eingesetzt.  http://bromba.com//exele/ee211117.htm



19.11.21: Platine, Kunststoff oder Holz


Bei der Entwicklung des Franzis-Roboters brauchte ich eine Halteplatte für eine LED und zwei Fototransistoren. Für den ersten Versuch habe ich Platinenmaterial genommen und die Bohrmaschine bemüht. Der zweite Gedanke war dann, eine Platine zu zeichnen, die in der Serienproduktion verwendet werden könnte.



Als ich noch überlegt habe, ob ich nun Muster bestellen sollte, kam der Vorschlag von Rainer, dass er die Platine auf seinem 3D-Drucker herstellen könnte. Tatsächlich ließen sich die Platinendaten in 3D-Daten umsetzen. Nur die dünnen Löcher für die optionalen Lötpunkte wurden nicht umgesetzt. Mit dieser schwarzen Platte habe ich dann weiter gearbeitet.



Für die Serienproduktion fiel die Wahl schließlich auf dünnes Sperrholz, das mit dem Laser geschnitten wurde. Die Platte verhält sich ebenfalls sehr gut, sie lässt sich fest einklemmen und hält die drei LED-Gehäuse gut fest.






Aus dem Roboter-Kalender


18.11.21: Reines C mit der Arduino IDE



Es hat mich schon oft geärgert, dass Arduino-Sketches nicht wirklich echtzeitfähig sind. Im Hintergrund kaufen Dinge ab, die man nicht sieht. Manche Aufgaben sind so nicht lösbar. Nun bin ich darauf gestoßen, dass die IDE auch reinen C-Code übersetzen kann. Üblicherweise enthält jeder Sketch eine Funktion void setup()  und eine Funktion void loop(). Wenn man diese beiden löscht, bleibt alles sauber. Es wird wirklich nur das übersetzt, was da steht. Man sieht es schon daran, dass das Ergebnis nun ungefähr 0% des Flash belegt.



Woher weiß der Compiler, wie solche Register wie DDRB und PORTB zu übersetzen sind? Normalerweise hat ein C-Programm einige include-Dateien, die all das festlegen. In der Arduino-IDE muss ich nur das Board (Arduino Nano) auswählen, dann ist klar, dass der ATmega328 benutzt wird. Im Hintergrund wird schon die passende Datei eingefügt, sodass nun alle Register des Chips bekannt sind. So bekomme ich beides: Ein reines C-Programm und die leichte Programmierbarkeit über den Bootloader.

Milliamp schrieb dazu:

Ich habe einen Port des Arduinos in der Standard-loop() nur an- und ausgemacht. Ich komme so auf 130 kHz. Mit int main() bekomme ich aber Fehler beim Compilieren. Können Sie mehr Fmax aus einem Port holen?

Antwort:

ich komme auf 4000 kHz:

int main(void)
{
  DDRB=255;
  while(true){
    PORTB=1;
    PORTB=0;
  }
}



 Elektronik-Labor  Notizen  Projekte  Labortagebuch