Skocz do zawartości

Paweł_1985

Użytkownicy
  • Zawartość

    20
  • Rejestracja

  • Ostatnio

Posty napisane przez Paweł_1985


  1. Nowa wersja z przerwaniami:

    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    
    volatile uint16_t value;
    
    void ADC_init(void);
    
    int main (void)
    {
    ADC_init();
    DDRD |=(1<<PD1);
    for (;;)
    {
    
    if (value > 1020)
    PORTD |= (1<<PD1);
    if (value < 1020)
    PORTD &= ~(1<<PD1);
    
    }
    }
    
    void ADC_init()
    {
    DDRA=0x00;
    PORTA=0x00;
    ADMUX= (1<<REFS0)|(1<<MUX1);
    ADCSRA= (1<<ADEN)|(1<<ADIE)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADSC);
    
    sei();
    }
    
    ISR(ADC_vect)
    {
    value = ADC;
    
    }
    

    Jak ustawiam prób na 1023 to właśnie wtedy mogę zaobserwować, że progiem zadziałania diody jest 1,22V i że to jest napięcie odniesienia.


  2. Witam

    Napisałem program realizujący funkcję przetwornika ADC na Atmega16:

    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    
    uint16_t value;
    
    void ADC_init(void);
    
    int main (void)
    {
    
    DDRD =_BV(1);
    for (;;)
    {
    ADC_init();
    value = ADC;
    if (value < 1020)
    PORTD = _BV(1);
    if (value > 1020)
    PORTD &= ~(_BV(1));
    }
    }
    
    
    void ADC_init()
    {
    DDRA=0x00;
    PORTA=0x00;
    ADMUX=(1<<REFS0);
    ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADATE)|(1<<ADSC);
    }
    

    Niestety pojawił się problem z napięciem odniesienia. Nie wiem dlaczego procesor jako napięcie odniesienia bierze ok. 1,22V bez względu na to co ustawię w rejestrze ADMUX.

    Podłączenie VCC i AVCC mam do zasilania, natomiast Vref tak jak podaje karta katalogowa przez kondensator do masy. Czy ktoś spotkał się może z podobnym problemem?


  3. Na podstawie poniższego artykułu wykonałem układ mający za zadanie realizować komunikację po I2C. Porty SDA i SCL obu mikroporocesorów połączyłem i zamonotwałem rezytory podciągające 4,7k. Komunikację po I2C realizuję wg

    artykułu

    Dodatkowo mikroporocesor Atmega16 posiada wyświetlacz LCD oraz klawiaturę4x4, natomiast Attiny2313 posiada nadajnikRC5. Układ ma zadanie przekazywać kod z Atmegi do Attiny celem wysłania go do robota. Niestety układ nie działa i nie mam pojęcia czemu. Proszę o pomoc, poniżej zamieszczam kod programu.

    $regfile = "ATtiny2313.dat"
    $crystal = 8000000
    
    
    Config Pinb.3 = Output
    
    
    
    Dim Togbit As Byte , Command As Byte , Address As Byte
    Dim A As Byte
    Togbit = 0
    Address = 0
    
    Config Sda = Portb.5
    Config Scl = Portb.7
    
    Do
    I2cinit
    I2cstart
    I2crbyte Command , Nack
    I2cstop
    
    Gosub Wyslij
    
    Loop
    End
    
    Wyslij:
    A = 0
    Do
    Rc5send Togbit , Address , Command
    Incr A
    Loop Until A = 7
    Return
    $regfile = "m16def.dat"
    $crystal = 8000000
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0.
    Config Kbd = Portd , Delay = 100
    
    Config Scl = Portc.0
    Config Sda = Portc.1
    
    
    Dim A As Byte
    
    
    Cls
    Lcd "TEST"
    I2cinit
    Do
    A = Getkbd()
    Gosub Wyslij
    Cls
    Lcd A
    
    Loop
    End
    
    Wyslij:
    I2cstart
    I2cwbyte A
    I2cstop
    Return

  4. Kod z helpa z Basoma nie ma opóźnienia, tak samo jak działający kod Michała. Natomiast kiedy umieściłem w kodzie Michała opóźnienie "wait" to program przestawał nadawać. Nie mam pojęcia z czym to może być związane. Próbowałem także wywoływać polecenie RC5Send w przerwaniu od Timera0 (z tego co wiem RC5Send wykorzystuje Timer1). Chciałem wykorzystać Attiny2313 tylko jako pilot RC5 komunikujący się z Atmegą16 (zawierającą główny program sterujący robotem) przez RS232 i nie wiem czy w tym przypadku będzie możliwość wykonania w ten sposób nadajnika.


  5. Dodam, że w przypadku takiego programiku jak poniżej dioda nadawcza wysyła sygnał - zaobserwowałem to przez aparat w telefonie. Odbiornik jednak nie odbiera sygnału. W helpie z Bascoma nie ma linijki: Config Pinb.3 = Output, jednak bez tego układ wogóle nie działa.

    $regfile = "ATtiny2313.dat"                                 'TYP PROCESORA
    $crystal = 8000000
    
    
    Dim Address As Byte                                         'Deklaracje zmiennych
    Dim Command As Byte
    Dim Togbit As Byte
    
    Config Pinb.3 = Output
    
    Togbit = 0
    Address = 0
    Command = 1
    Wait 5
    
    Do
    
    Rc5send Togbit , Address , Command
    
    
    Loop
    
    End

  6. Witam

    W oparciu o Attiny2313 zbudowałem pilot RC5 do robota. Robot posiada odbiornik RC5 działający - sprawdzałem pilotem TV, wszystko w porządku. Nadajnik natomiast nie działa, sprawdzałem już wszystkie informacje jakie znalazłem na forach internetowych, ustawiłem fuse bity poprawnie. Schemat nadajnika wziąłem z helpa z Bascoma. Poniżej zamieszczam program wraz ze schematem nadajnika, obecnie (do testów) używam tylko jednego tranzystora i tylko jednej diody nadawczej.

    $regfile = "ATtiny2313.dat"                                 'TYP PROCESORA
    $crystal = 8000000
    
    
    Dim Address As Byte                                         'Deklaracje zmiennych
    Dim Command As Byte
    Dim Togbit As Byte
    
    Config Pinb.3 = Output
    
    Togbit = 0
    Address = 0
    Command = 0
    Wait 5
    
    Do
    
    Rc5send Togbit , Address , Command
    Wait 2
    Command = 1
    Rc5send Togbit , Address , Command
    Wait 2
    Command = 3
    Rc5send Togbit , Address , Command
    Wait 2
    Command = 4
    Rc5send Togbit , Address , Command
    Wait 2
    Command = 5
    Rc5send Togbit , Address , Command
    Wait 2
    Command = 6
    Rc5send Togbit , Address , Command
    Wait 2
    
    Loop
    
    End
    


  7. Na początek ma to być robot sterowany za pomocą standardu RC5, nadajnik ma być wyposażony w wybór trzech opcji sterowania robota: joystick, programowanie jazdy oraz program demo. W przyszłości chciałbym rozbudować go o czujniki oraz komunikację radiową.


  8. Pomierzyłem napięcia: napięcia podawane z Atmegi16 wynoszą 4,95V, napięcia na wyjściach mostka podałem wyżej w pierwszym poście, na pinach 1 i 15 zgodnie z załączonym schematem mam oporniki 1k. Przy 2V silnik się jeszcze kręci, choć przerywa troszkę.

    Tak, ten test potwierdza, że przynajmniej silnik będzie się kręcił gdy mostek zapoda mu prawidłowe napięcie i że elektronika serwa nie zwiera silnika. Sprawdzałeś w obie strony? - warto się upewnić.

    W obie strony? Tzn?

    Poniżej zamieszczam schematy:


  9. Ale nie jest to dobrą praktyką. Diabeł siedzi w szczegółach i jedna elektronika serwa może czuć się w takich warunkach dobrze a inna nie. Jeżeli na tej małej płyteczce, w oryginalnym mostku sterującym silnikiem serwa są 4 diody, to one doprowadzą zasilanie które zapodasz na silnik do szyn zasilających elektronikę. To co się wtedy stanie zależy bardzo od projektu tej elektroniki i nie ma jednego, "typowego" zachowania.

    Tylko jak podłączam serwo bezpośrednio do zasilania z baterii to wszystko jest ok, więc widocznie elektronika nie ma na to wpływu, choć mogę się mylić.


  10. Na stronie "http://hobbyrobotyka.pl/2010/07/serwa-modelarskie-w-robotyce/" znalazłem informację, że: "Niektórzy wolą usunąć płytkę z elektroniką i zostawić sam silnik z dwoma przewodami – oczywiście, można i tak. W moim przypadku silnik jest unieruchomiony płytką, więc jej usunięcie sprawi, że zacznie się obracać. Dodatkowo, stosunkowo łatwo można odwrócić zmiany i przywrócić serwo do pierwotnej funkcjonalności (kwestia zastąpienia blokady np. wciśniętym w plastik na gorąco metalowym pręcikiem)." Dlatego zostawiłem elektronikę. Dodatkowo jak podłączam serwo do napięcia bezpośrednio z baterii to obraca się bez problemu.


  11. Serwo przerobione, przy czym nie usuwałem płytki tylko przewody podłączyłem do płytki w miejscu gdzie przylutowany jest silnik, potencjometr wylutowałem z płytki. Do filtracji napięcia stosuję kondensatory zgodnie z data sheet układu L298N czyli 100nF. Wszystkie piny są podłączone do mikrokontrolera. Jako szybkie diody użyłem diod BYV26E.


  12. Witam

    Niedawno zakupiłem układ L298N oraz dwa serwa SG 5010. Po podłączeniu serw do układu L298 serwa stoją w miejscu, a napięcie na nich wynosi 0V. Przy niepodłączonych serwach napięcia wynoszą: 4,2V oraz 5,3V w zależności od kierunku ruchu. Układem L298N steruję za pomocą Atmega16. Wejścia EA podłączone do wyjść Atmegi ustawionych w stan wysoki. Układ zasilam napięciem z pięciu baterii R6. Natomiast do uzyskania napięcia 5V wykorzystuję stabilizator TS2940. Czy ktoś może zetknął się z podobnym problemem?

×
×
  • Utwórz nowe...