Labortagebuch November 2021
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.
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;
}
}