Patareide sorteerija

Meeskond

  • Kustas Kõiv
  • Ott Reinhold
  • Kristjan Soomänd
  • Marko Laan

Lähteülesanne

Luua süsteem, mis suudaks määrata AA ja AAA patareide laetust võimalikult lihtsalt patareide omaniku jaoks.

Nõuded

  • Patarei testimisel polaarsus ei loe
  • Patarei olukord kuvatakse ekraanile (Voltides)
  • Sorteerijasse võib sisestada AA ja AAA patareisid, mitte rohkem, kui 10 korraga
  • Soovi korral tagastatakse kasutuskõlblikud patareid

3D mudel

Üldine mudel

Lahendus

Süsteem toetub kahele Alumiinium latile, mille külge kinnituvad muud detailid.
Üldpildis on robot silinder- ülemises otsas paikneb kuppel, mille diskreetse pöörlemise abil suunatakse patareid mõõtmisele.
Kupli all toimub testimine ja vastavalt kasutaja soovile tagastatakse täis patareid.

Mehhaanika

Kogu agregaat kinnitub silindri kujuga konteinerile, kuhu langevad kasutuskõlbmatud patareid. Süsteemi kõik komponendid- mootorid, koos kinnitustega, elektroonika komponendid, on kinnitatud kahele alumiiniumist talale. Ajameid on kokku viis- 4 servomootorit ja 1 DC-mootor. Nemad kallutavad, keerutavad ja liigutavad erinevate hoobade abil mehhanisme.

Juhtimine

Tähiste tähendused:

Tähis Tähendus 0 1-1Funktsioon
S1Surunupp AvatudSuletud Töö alustamine
S2Surunupp AvatudSuletud Patareide tagastamine
M1Dc mootor SeisabTöörežiim Kausi pöörlemine
M2I Servomootor SeisabTöörežiim Ükshaaval laadimine
M3II Servomootor SeisabTöörežiim Klemmi ühendamine
M4III Servomootor SeisabPäripäeva Vastupäeva Esialgne kallutamine
M5IV Servomootor SeisabPäripäeva Vastupäeva Puhvri kallutamine
A1Infrap. andur Signaal puudubSignaal olemas Patarei olemasolu
A2PingeandurSignaal puudubSignaal olemas Patarei seisund

Olekudiagramm:

Elektroonika

Patareide testimise jaoks lülitatakse nad klemmiga kokkupuutel mõõteahelasse. Ahela tööpõhimõte seisneb selles, et ta rakendab galvaanielemendile koormuse, ning kasutades komparaatorit, hoiab ahelas konstantset voolu (~30 mA). Mikrokontroller mõõdab pinget patarei klemmide vahel, saades sedasi teada, kui suur on pingelang. Edasi tehakse otsus patarei kasutuskõlblikuse kohta. Kuna patarei langemine on juhuslik, ei saa me neid polaarsuse mõttes ühte pidi sättida ning selle probleemi lahendasime Shottky dioodidega. Neil tekib küll väike pingelang (~0,1V), kuid seda võtame koodi kirjutamisel arvesse.

  • Mõõteahela skeem:

  • Shottky dioodid:

  • Põhimõttelahendus:

Lähtekood

Sorteerija lähtekood:

main.c
int main(void)
{
 
	signed char kordus=0;
 	unsigned char i;
	pin leds[3]    = { PIN(C, 5), PIN(C, 4), PIN(C, 3) };
        pin buttons[3] = { PIN(C, 2), PIN(C, 1), PIN(C, 0) };
	for (i = 0; i < 3; i++)
	{
		pin_setup_output(leds[i]);
		pin_setup_input(buttons[i]);
		pin_set(leds[i]);
	}
 
	unsigned char new_value1;
	unsigned char new_value2;
 
	algustekst();
 
 
 
 
    /* servode algväärtustamine */
       init_servos();
 
    /* enable interrupts */
       sei();
 
 
 
 
 
	while (true)
	{
	pin_toggle(leds[2]);
	hw_delay_ms(200);
	pin_set(leds[2]);
	hw_delay_ms(200);
 
	signed char loendur=0;
	new_value1 = pin_get_debounced_value(buttons[2]);
 
	while(!new_value1){	
		pin_set(leds[2]);
		unsigned short value;
	    	signed short distance;
 
 	dcmootor();
 
	// ADC muunduri seadistamine
	adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 
	// Anduri väljundpinge 4-kordselt ümardatud väärtuse lugemine
	value = adc_get_average_value(0, 4);		
 
	// ADC väärtuse kauguseks ümberarvutamine
	distance = ir_distance_calculate_cm(GP2Y0A21YK, value);
 
		if(kordus==4)
		{
		kordus=0;
		algustekst();
		break;
		}
 
		if (distance <=11)
      {	
			kordus=0;		
			SERVO6 = SERVO_MAX;
			hw_delay_ms(500);
 
		char text[16];
		unsigned char result;
		float tulemus;
 
 
	// Võrdluspingeks AREF viigu valimine
	// Multiplekseriga kanali 3 valimine
	// Tulemus on vasak-asetusega
	ADMUX = (1 << REFS0) | (1 << ADLAR) | (3);
 
	lcd_alpha_clear();
	lcd_alpha_write_string("Patarei taituvus"); 
 
	// ADC üksuse käivitamine,
	// teisendustakti seadmine 16 korda aeglasemaks töötaktist
	ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADSC);
 
	// Mõõtmise lõpetamise ootamine
	while (ADCSRA & (1 << ADSC)) continue;
 
	// 8-bitise tulemuse lugemine
	result =ADCH;
	tulemus=(float)result*0.02;
	sprintf(text, "%3.0f %%",(tulemus*100)/0.88);
 
	lcd_alpha_goto_xy(0, 1);
	lcd_alpha_write_string(text);
	hw_delay_ms(500);
	SERVO6 = SERVO_MID-400;
   	hw_delay_ms(400);
 
	if(tulemus<0.7)
	{
	pin_set(leds[2]);
	SERVO5 = SERVO_MIN-300;
 	hw_delay_ms(400);
	SERVO5 = SERVO_MID-400;
 	hw_delay_ms(400);
	pin_toggle(leds[0]);
	}
	else 
	{
	 pin_set(leds[0]);
	 SERVO5 = SERVO_MAX;
 	 hw_delay_ms(400);
	 SERVO5 = SERVO_MID-400;
 	 hw_delay_ms(400);
	 pin_toggle(leds[2]);
	 loendur++;
	}
       }
	kordus++;		
   }
   if(loendur>=1)
   {
   	char text1[16];	
	char text2[16];
	for(int i=10;i>0;i--){
	lcd_alpha_clear();
	pin_toggle(leds[1]);
	sprintf(text1, "Tais patareid %d",loendur);
	lcd_alpha_write_string(text1); 
	sprintf(text2, "%d",i);
 
	lcd_alpha_goto_xy(0, 1);
	lcd_alpha_write_string("Hoia nuppu S2");
	hw_delay_ms(1000);
	pin_set(leds[1]);
	lcd_alpha_clear();
	lcd_alpha_write_string(text2);
	hw_delay_ms(1000);
	new_value2 = pin_get_debounced_value(buttons[1]);
 
	if(!new_value2)
	{
	lcd_alpha_clear();
  	SERVO4=SERVO_MAX;
  	hw_delay_ms(400);
  	SERVO4 = SERVO_MID;
	algustekst();
	break;
	}
   }
	lcd_alpha_clear();
  	SERVO4=SERVO_MIN;
  	hw_delay_ms(400);
  	SERVO4 = SERVO_MID;
	algustekst();
 
 
   }
 }
}

Majanduskalkulatsioon

Ehitamine

Sai valmis meisterdatud läbipaistev väline kest süsteemile.

Trükkplaadi tegemine.

Programmeerimine.

Projektijuhtimine

Kõik meeskonnaliikmed tegelesid jooksvalt kõikide lahendust vajavate probleemidega.

Nädalaaruanded:

Kokkuvõte ja järeldused

Suurimaks miinuseks oli ajapuudus. Seade vajaks veel palju katsetamist, seadistamist ja ümberehitamist, et saada kaubanduslik välimus ja täielik funktsionaalsus.

Viited ja kasutatud kirjandus

et/projects/tudengid11/patareidesorteerija.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0