Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:projects:tudengid11:patareidesorteerija [2011/04/08 13:28] kusta001et:projects:tudengid11:patareidesorteerija [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== 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 ====
 +
 +{{:et:projects:tudengid11:ddd.png?600|}}
 +
 +==== Üldine mudel ====
 +{{:et:projects:tudengid11:robot_blokk_diagramm_2_.png?600|}}
 +
 +==== 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^-1^Funktsioon^
 +|S1|Surunupp |Avatud|Suletud | |Töö alustamine|
 +|S2|Surunupp |Avatud|Suletud | |Patareide tagastamine|
 +|M1|Dc  mootor |Seisab|Töörežiim| |Kausi pöörlemine|
 +|M2|I   Servomootor |Seisab|Töörežiim| |Ükshaaval laadimine|
 +|M3|II  Servomootor |Seisab|Töörežiim| |Klemmi ühendamine|
 +|M4|III Servomootor |Seisab|Päripäeva |Vastupäeva |Esialgne kallutamine|
 +|M5|IV  Servomootor |Seisab|Päripäeva |Vastupäeva |Puhvri kallutamine|
 +|A1|Infrap. andur |Signaal puudub|Signaal olemas| |Patarei olemasolu|
 +|A2|Pingeandur|Signaal puudub|Signaal olemas| |Patarei seisund|
 +
 +Olekudiagramm:
 +
 +{{:et:projects:tudengid11:algoruetmika.png?600|}}
 +
 +
 +==== 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:
 +
 +{{:et:projects:tudengid11:battery-tester-circuit-diagram.png|}}
 +
 +  * Shottky dioodid:
 +
 +{{:et:projects:tudengid11:diodes-bridge-rectifier.jpg|}}
 +
 +  * Põhimõttelahendus:
 +
 +{{:et:projects:tudengid11:gggfff.png?600|}}
 +
 +
 +===== Lähtekood =====
 +
 +Sorteerija lähtekood:
 +
 +<file php 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();
 + 
 +
 +   }
 + }
 +}
 +</file>
 +
 +===== Majanduskalkulatsioon =====
 +
 +{{:et:projects:tudengid11:ggg.png?600|}}
 +
 +===== Ehitamine =====
 +
 +
 +Sai valmis meisterdatud läbipaistev väline kest süsteemile.
 +
 +{{:et:projects:tudengid11:photo0044.jpg?600|}}
 +{{:et:projects:tudengid11:dsc1.jpg|}}
 +{{:et:projects:tudengid11:dsc2.jpg|}}
 +
 +Trükkplaadi tegemine.
 +
 +{{:et:projects:tudengid11:dsc04167.jpg?400|}}
 +{{:et:projects:tudengid11:dsc04171.jpg?400|}}
 +{{:et:projects:tudengid11:dsc04173.jpg?400|}}
 +{{:et:projects:tudengid11:dsc04174.jpg?400|}}
 +{{:et:projects:tudengid11:dsc04180.jpg?400|}}
 +
 +Programmeerimine.
 +
 +{{:et:projects:tudengid11:dsc04190.jpg?400|}}
 +
 +
 +
 +===== Projektijuhtimine =====
 +
 +Kõik meeskonnaliikmed tegelesid jooksvalt kõikide lahendust vajavate probleemidega. 
 +
 +Nädalaaruanded: 
 +
 +  *{{:et:projects:tudengid11:esimese_nadala_aruanne_patarei_vangla.pdf|1. aruanne}}
 +  *{{:et:projects:tudengid11:teise_nadala_aruanne_patarei_vangla.pdf|2. aruanne}}
 +  *{{:et:projects:tudengid11:iii_nadala_aruande_patarei_vangla.pdf|3. aruanne}}
 +  *{{:et:projects:tudengid11:4_nadala_aruanne_patarei_vangla.pdf|4. aruanne}}
 +
 +===== 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 =====
 +
 +  - http://home.roboticlab.eu/et/start?s=translation_true
 +  - http://www.extremecircuits.net/2010/04/battery-tester-circuit-schematic.html
 +  - http://images.blog-u.net/img/diodes-bridge-rectifier/
 +  - http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf
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