Skocz do zawartości

Linefollower - poprawa osiągów


Zdzisiek

Pomocna odpowiedź

Witam

Po zrobieniu swojego pierwszego linefollowera i zaprogramowaniu, przeszedł on próby i.. spełnia swoje zadanie podążania za linią, jednak robi to zbyt wolno. Do tematu załączam filmik i kod programu. Aby robot się nie gubił muszę ustawić go na prędkość 300 (wypełnienie PWM),a jak to wygląda widać na filmiku. Moje pytanie brzmi co zrobić, aby to poprawić, bo przekonany jestem, że bez regulatora PI można tu jeszcze coś zdziałać(?). Robot to najprostsza wersja linefollowera, atmega8 mostek l293d silniki pololu hp 30:1 i 3 transoptory. Mam jeszcze wątpliwości, co do zasilania, gdyż widać przy obciążeniu jak wyświetlacz lcd przygasa. Przy zasileniu z komputera usb robot zachowuje się inaczej. Z góry dziękuje za porady

    #define F_CPU 1000000L
   #include <avr/io.h>
   #include <util/delay.h>
   #include <avr/interrupt.h>
#include "HD44780.h"

volatile int wynik1;
volatile int wynik2;
volatile int wynik3;

volatile int wejscie;

ISR(ADC_vect)    //obsługa przerwania od ADC
{
      switch(wejscie)
      {

        case 3://gdy PC3
          wynik2=ADC;     //czujnik lewy
          break;


         case 2://gdy PC2	czujnik prawy
           wynik1=ADC;     
           break;

         case 1://gdy PC1  srodkowy
           wynik3=ADC;     
           break;
      }

      if(wejscie<3)
           wejscie++;
      else
           wejscie=1;

      ADMUX = 0;  //kasowanie rejestru

      ADMUX  |= (1<<REFS0)| wejscie; //Ustawianie nowych wartości

}



   int main(void)
   {
       volatile char buffer[5];

	LCD_Initalize();

	DDRB |= (1<<PB1)|(1<<PB2);
	DDRB |= (1<<PB0)|(1<<PB3)|(1<<PB4)|(1<<PB5);
	DDRC= 0x00;

          //PWM
       TCCR1A |= (1<<WGM10)|(1<<WGM11);  
       TCCR1A |= (1<<COM1A1);
       TCCR1A |= (1<<COM1B1);
       TCCR1B |= (1<<CS11);



      //kierunek obrotu kol
       PORTB |= (1<<PB0)|(1<<PB5); // PB0 PB3 - lewe kolo
       PORTB &= ~(1<<PB3);		 // PB5 PB4 - prawe kolo
       PORTB &= ~(1<<PB4);

   //szybkosc obrotu kol
       OCR1A = 0;
	OCR1B = 0;


	//ADC ustawienie
	    ADCSRA |= (1<<ADEN) //ADEN=1 włączenie przetwornika ADC 
		       |(1<<ADPS0) // ustawienie preskalera na 8  
                  |(1<<ADPS1) 
			   |(1<<ADIE)
			   |(1<<ADFR)
			   |(1<<ADSC);


	ADMUX |= (1<<REFS0); 


			wejscie=1;
	sei();


	while(1)
       {





	 if (wynik2>800) {					//jesli czujnik lewy na lini



						OCR1A = 0;		//lewy silnik
						OCR1B = 300;	//prawy silnik
					   }

		else if (wynik1>800){			//jesli czujnik prawy na lini


					   OCR1A = 300;
					   OCR1B = 0;		
					   }

		else {		
 					//jesli prosta
					   OCR1A = 300;
					   OCR1B = 300;	};


	}

}
Link do komentarza
Share on other sites

Chciałem dodać tutaj na forum ale nie można ładować plików mp4. No mam nadzieję, że chociaż trochę szybciej da radę. Przy zasilaniu z komputera wygląda to płynniej, jednak często się "gubi".

Link do komentarza
Share on other sites

Zdzisiek, samo podświetlanie wyświetlacza może zabijać twoją 9V baterię o silnikach już nie wspomnę. Zmień zasilanie na coś poważniejszego, dodaj kilka czujników więcej i można wtedy myśleć o przyspieszeniu robota.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Coś poważniejszego, czyli rozumiem, że akumulatorek Li-Pol? Jeśli chodzi o czujniki to gorzej z wymianą, chyba, że zamienił bym moją płytkę na np. taką botland A chcąc się upewnić: regulatora na te 3 czujniki nie ma sensu robić?

Link do komentarza
Share on other sites

Możesz próbować, na pewno uzyskasz lepsze efekty, niż teraz.

Z szybkich porad:

- lepszy akumulator

- rozsuń trochę koła

- dodaj chociaż regulator P 😉

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.