- Akku Tests und Balkonkraftwerk Speicher         
Seite 6 von 8 ErsteErste ... 45678 LetzteLetzte
Ergebnis 51 bis 60 von 72

Thema: Probleme mit 22er-Lochscheiben

  1. #51
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.067
    Anzeige

    LiFePo4 Akku selber bauen - Video
    dich meinte ich doch nicht =) ich bezog mich auf inkas frage weiter oben.

    aber eben das habe ich ja auch oben drüber gesagt, wird der pullup zugeschaltet ist die spannung am pin höher, und es wir schwerer den low pegel zu erreichen, und nicht wie du gesagt hast, der high pegel würde nicht mehr erreicht. und wie ich auch gesagt habe, müsste der transistor dann stärker durchschalten, also einen geringeren widerstandswert haben... ich denke wir meinen das gleiche, oder?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  2. #52
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Ich denke schon und hoffe, dass wir inka nun nicht zu sehr verwirrt haben.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #53
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Ein Bild mal dazu. (Ach du meine Güte, hätte ich das mal mit dem Bleistiftt gemalt, 1/4 der Zeit hätte es wohl nur benötigt.)

    Ansatz sind die Messdaten von inka.
    1) Der kleinste Wert ist 18
    2) Der größte Wert ist 696

    Umrechnen in die Spannung am Prozessor-Pin:
    5 Volt / 1023 * ADC-Wert
    1) 5 Volt / 1023 * 18 = 0,088 Volt
    2) 5 Volt / 1023 * 696 = 3,41 Volt

    Die Spannung am Prozessor-Pin entspricht der Spannung über dem Foto-Transistor. Somit muss die restliche Spannung von den 5 Volt Versorgung am Widerstand R18 abfallen.
    1) 5 Volt - 0,088 Volt = 4,912 Volt
    2) 5 Volt - 3,41 Volt = 1,59 Volt

    Entsprechend fließt dann folgender Strom durch diesen Widerstand R18
    1) 4,912 Volt / 4,7 kOhm = 1,045 mA
    2) 1,59 Volt / 4,7 kOhm = 0,338 mA

    Da der Strom dann ja auch durch T11 muss, kann der Widerstand vom Transistor nun endlich berechnet werden. (U [Transistor=U-Pin] / I [R18])
    1) 0,088 Volt / 1,045 mA = 84 Ohm
    2) 3,41 Volt / 0,338 mA = 10088 Ohm


    Und nun den Pull-Up-Widerstand parallel zum 4,7 kOhm.
    Leider 2 Möglichkeiten, da die Angabe in der ATmega8-Doku (Seite 237 I/O-Pin Pull-up Resistor) von 20 bis 50 kOhm schreibt.

    Nun die Spannung am AD-Eingang, wenn wir die beiden oben berechneten Widerstände vom T11 nutzen:
    FALL 1 : 20 kOhm parallel zu 4,7kOhm = 3805 Ohm
    1) 5 Volt / (3805 Ohm + 84 Ohm) * 84 Ohm = 0,108 Volt
    2) 5 Volt / (3805 Ohm + 10088 Ohm) * 10088 Ohm = 3,63 Volt

    FALL 2 : 50 kOhm parallel zu 4,7kOhm = 4296 Ohm
    1) 5 Volt / (4296 Ohm + 84 Ohm) * 84 Ohm = 0,096 Volt
    2) 5 Volt / (4296 Ohm + 10088 Ohm) * 10088 Ohm = 3,51 Volt

    Und wie man nun sehen kann, habe ich mich mit den Pull-Up's vertan.
    Die Spannung wird höher, je niedrieger der Pull-Up-Widerstand ist. Somit wird der minimale Erkennungs-Pegel von 3 Volt noch weiter überschritten, und es ist doch sinnvoll die Pull-Up's einzuschalten.

    Es lohnt sich immer seinen eigen Quatsch mal nachzurechen.

    Gruß Sternthaler


    @damaltor
    Ich kann keinen Upload mehr machen, da meine 3 MB voll sein sollen. Kannst du da was machen?
    Aus diesem Grund doch kein Bild von mir. Und das obwohl ich das so toll gemalt habe

    [EDIT] Ach du meine Güte, seit ihr schnell mit dem Schreiben und Erklären. Mittlerweile habt ihr schon 5 Posts eingetragen und ich sitze hier und versuche Bildchen zu malen
    Lieber Asuro programieren als arbeiten gehen.

  4. #54
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.067
    klar, schicks per email, ich hängs dann an... muss mal sehen ob ich deinen counter irgendwie resetten kann.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  5. #55
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Danke damaltor, die Mail ist unterwegs.

    Und nun noch eine Frage an radbruch:
    Zitat Zitat von radbruch
    Die schmalen Spitzen kommen von den kleinen Löchern.
    (Alle anderen schauen jetzt bitte mal weg)
    Bevor ich hier nun auch daneben liege. Sollte es nicht genau andersrum sein?
    Dunkel = Kein Loch = Hohe Spannung => HIGH-Pegel
    Hell = Loch = Niedrige Spannung => LOW-Pegel

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  6. #56
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Ihr könnt gerne alle zuschauen. Ich bin doch nicht unfehlbar. Im Datenblatt des Transistors (LPT 80 A, NPN-Silizium-Fototransistor, z.b.: C) steht was von "Dunkelstrom" im nA-Bereich. Das ist dann wohl "Hochohmig" und bedeutet: die Spannung am Pin ist im Dunkeln am höchsten. Auch ich kann mich mal irren. *lol*

    Erklärungsversuch2 für die Spitzen:

    Weil die erreichten 3,6V näher am high-Pegel liegen als die ebenfalls erreichten 0,09V am low ergibt sich eine Häufung bei low? Mich würden mal die abgedeckt/freieSicht-Werte interessieren. Schöne Restnacht noch ...

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #57
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180

    verwirrt?

    Zitat Zitat von radbruch
    Ich denke schon und hoffe, dass wir inka nun nicht zu sehr verwirrt haben.
    naja, ich versuche mich mal durchzubeissen. Was ich noch nicht verstehe ist das mit dem (im prozessor?) eingebauten pull-up. Ich denke ob der nun benutzt wird oder nicht, darauf habe ich doch gar keinen einfluss, oder?
    gruß inka

  8. #58
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180

    wann schlaft ihr eigentlich?

    Zitat Zitat von radbruch
    Mich würden mal die abgedeckt/freieSicht-Werte interessieren. Schöne Restnacht noch ...
    mic
    meinst du die werte, die ich bei 22 löchern messen würde mit der von dir vorgeschlagenen blende an der (sende)diode?
    gruß inka

  9. #59
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.067
    auf die pullups hast du natürlich einfluss. mit den datenregistern kannst du ja schon umgehen =)

    wenn ein pin aus EINGANG gestellt ist, also das entsprechende bit im DDRx register 0 ist, kannst du mithilfe des PINx registers den wert einlesen. soweit klar. das register PORTx, welches ja eigentlich dazu da ist, um daten auf den ausgang (!) zu schreiben, wird jetzt zweckentfremdet: hat das register PORTx bei einstellung auf eingang eine gesetzte 1, so ist dieser pin über einen hochohmingen widerstand mit VCC verbunden.

    hier im anhang noch sternthalers bild:
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken _bersicht.jpg  
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  10. #60
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    ok, heist also die pull-ups sind standarmässig abgeschaltet. Ich müsste also zusätzlich, VOR der verwendung der OdometrieData() funktion (der code stammt aus der adc.c)
    Code:
    00221 void  OdometryData (
    00222   unsigned int  *data)
    00223 {
    00224   int   ec_bak = autoencode;            // Sichert aktuellen Zustand
    00225 
    00226   /*
    00227      Autoencode-Betrieb vom ADC-Wandler unterbinden.
    00228   */
    00229   autoencode = FALSE;
    00230   /*
    00231      Vorbereitung zum lesen der Odometrie-Sensoren.
    00232   */
    00233   DDRC &= ~((1 << PC0) | (1 << PC1));   // Port auf Input=>Back-LEDs gehen aus
    00234   ODOMETRIE_LED_ON;                     // Odometrie-LED's einschalten
    00235 
    00236   /*
    00237      Linken Odometrie-Sensor lesen
    00238   */
    00239   ADMUX = (1 << REFS0) | WHEEL_LEFT;    // Referenz mit externer Kapazitaet
    00240   ADCSRA |= (1 << ADSC);                // Starte AD-Wandlung
    00241   while (!(ADCSRA & (1 << ADIF)))       // Ende der AD-Wandlung abwarten
    00242     ;
    00243   ADCSRA |= (1 << ADIF);                // AD-Interupt-Flag zuruecksetzen
    00244   data [0] = ADCL + (ADCH << 8);        // Ergebnis als 16-Bit-Wert
    00245 
    00246   /*
    00247      Rechten Odometrie-Sensor lesen
    00248   */
    00249   ADMUX = (1 << REFS0) | WHEEL_RIGHT;   // Referenz mit externer Kapazitaet
    00250   ADCSRA |= (1 << ADSC);                // Starte AD-Wandlung
    00251   while (!(ADCSRA & (1 << ADIF)))       // Ende der AD-Wandlung abwarten
    00252     ;
    00253   ADCSRA |= (1 << ADIF);                // AD-Interupt-Flag zuruecksetzen
    00254   data [1] = ADCL + (ADCH << 8);        // Ergebnis als 16-Bit-Wert
    00255 
    00256   /*
    00257      Autoencode-Betrieb vom ADC-Wandler wiederherstellen.
    00258   */
    00259   autoencode = ec_bak;
    00260 }
    irgendwo eine anweisung unterbringen die in das Register PORT 0 bzw. PORT 1 eine 1 reinschreibt und damit den eingang PC0 bzw PC1 hochohmig macht? Passiert aber nicht so etwas schon in der codezeile 233?

    ganz was anderes. Im code oben steht OdometryData, in diesem programm z.b. steht OdometrieData
    Code:
    //* -------- Programm zum Loggen der Odometriedaten ----*/
    
    #include "asuro.h"
    #include "inka.h"
    #include <string.h>
    #include<stdio.h>
    
    int main(void) {
    unsigned int data[200][2];
    char c[12];
    int i;
    
    Init();
    WaitforStart();
    
    //motoren vorwärts
    MotorDir(FWD,FWD);
    MotorSpeed(160,160);
    //warten bis motoren drehzahl erreicht haben
    Msleep (1000);
    //odo-werte einlesen
    for (i=0; i<200;i++) {
    	OdometrieData(data[i]);
    }
    	//motoren stop
    	MotorSpeed(0,0);
    	//formatiert ausgabe odo-werte
    	for (i=0;i<200;i++){
    	sprintf(c,"%4d\t%4d\n\r",data[i][0],data[i][1]);
    	SerWrite(c,12);
    }
    while(1);
    return 0;
    }
    wie passt das zusammen?
    gruß inka

Seite 6 von 8 ErsteErste ... 45678 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests