Automatinė akvariumo šėrykla 2

Jau keturis metus naudojau savos gamybos žuvų sėryklėlę ir per tą laiką išlindo keletas konstrukcijos trūkumų. Pati didžiausia naudotos konstrukcijos bėda ta, kad galima naudoti tik labai smulkų granuliuotą žuvų maistelį, kurio ne visada visur galima nupirkti, ir jo kaina gerokai didesnė nei maisto kuris parduodamas dribsnių pavidalu. Kadangi pats turiu 3d spausdintuvą paieškojau internete panašaus tipo įrenginių brėžinių. Radau du naudojančius servo variklį ir sraigtą maisto padavimui: http://www.thingiverse.com/thing:736693, http://www.thingiverse.com/thing:301532. Vienas naudoja užsukamą indelį maisto pildymui ir papildomą dribsnių smulkintuvą kitas reikiamo dydžio servo mechanizmą. Pakoregavus abiejų projektų failus ir pridėjus kažkiek savų gautas mechanizmas naudojantis mano senesnės šėryklos plokštę, ir galintis naudoti dribsnių pavidalo maistą.


Šiai konstrukcijai reikėjo perdaryti servo mechanizmą, kad galėtų suktis ratu ir pakeisti valdančios programos kodą.

 

Modeliai 3D spausdinimui

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“dezute_viršus“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Dėžutė elektronikai (viršus)

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“dezute_apacia“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Dėžutė elektronikai (apačia)

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“mygtukas“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Dėžutė elektronikai (mygtukas)

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“tvirtinimas“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Tvirtinimas prie akvariumo

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“piltuvas“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Tvirtinimas prie akvariumo (piltuvėlis)

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“dantratis“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Dantratis

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“slietas“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Sraigtas

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“indelis“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Indelis

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“vamzdžio laikiklis“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Vamzdžio laikiklis

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“padavimo piltuvas“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Padavimo piltuvas

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“smulkintuvas“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Dribsnių smulkintuvas

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“vamzdis“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Padavimo vamzdis

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“variklio laikiklis“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Variklio laikiklis

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“dangtelis“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Vamzdžio dangtelis

[canvasio3D width=“320″ height=“240″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“dangtelio laikiklis“ objScale=“1.5″ objColor=“#66F6F6″ lightSet=“7″ reflection=“on“ refVal=“5″ objShadow=“on“ floor=“on“ floorHeight=“42″ lightRotate=“off“ Help=“off“] [/canvasio3D]

Dangtelio laikiklis

stl_failai atsisiuntimui

Ne visos dalys idealiai sumaketuotos, kai kur reikia pagal vietą dilde pataisyti. Tvirtinimas prie akvariumo padarytas iš atskirų dalių tam, kad būtų paprasčiau atspausdinti ir nereikėtų daug plastiko detalių palaikymui. Dalis atspausdinus reikia suklijuoti. Mechanizmo laikiklis prie akvariumo dangčio tvirtinamas medvarščiais.  Pats mechanizmas prie laikiklio tvirtinamas kanceliarinėmis gumytėmis. AVR ISP jungties kištukai patrumpinti tiek, kad tilptų į dėžutę, skyles varžtams spausdintoje plokštėje nėra tinkamoje vietoje šiai dėžutei, plokštės kampus ties varžtais reikia nupjauti. Dėžutės elektronikai, servo mechanizmui, variklio laikiklio surinkimui ir tvirtinimui panaudoti skirtingų ilgių M3 varžtai ir veržlės. Dantračio sujungimui su dribsnių smulkintuvu panaudotas ilgas M4 varžtas ir veržlės.

Programos kodas

#define F_CPU 9600000UL
#define variklis PB0
#define led PB4
#define mygt PB3
#define adresas 2

#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>


// impulso trukmė 
int kamp[]={400,1000};

uint8_t laikas = 0;

void irasom( uint8_t n ) // išsaugom naują porcijų skaitliuko vertę
{
   n = ( n / 10 ) - 2;
   eeprom_busy_wait();
   __EEPUT( adresas, n );
}

uint8_t skaitom( void ) // skaitom porcijų skaitliuko vertę iš eeprom
{
   uint8_t rez;
   eeprom_busy_wait();
   __EEGET( rez, adresas );
   if ( rez > 100 ) // jei pradinė reikšmė nenustatyta nustatom mažesnę dozę
     {
       rez = 3;
       irasom(3);
     }
   return rez;
}

void pozicija(int p, long r) // formuojame impulsus servo varikliui
{
   for ( int k = 0; k < r; k++)
     {
       PORTB |= _BV(variklis);
       for ( int j = 0; j < p; j++)
         _delay_us(1);
       PORTB &=~ _BV(variklis);
      _delay_ms(10);
     }
}

void pilam(void) //judesių seka maisto išpylimui
{
   PORTB |= _BV(led); //uždegam diodą
   uint8_t n = skaitom(); //perskaitom nustatymus
   if ( n > 100 ) n = 3;
   pozicija( kamp[ 0 ], n*16+10 );
   pozicija( kamp[ 1 ], 10 );
   PORTB &=~ _BV(led); //gesinam diodą
}


int laukiam ( int p) //laukiam p minučių arba mygtuko paspaudimo
{
   PORTB &=~ _BV(led);
   for ( int i = 0; i < p; i++ )
     {
       for ( int j = 0; j < 600; j++ )
        {
          if (PINB & _BV(mygt)) //jei mygtukas paspaustas skaičiuojam paspaudimo laiką, 
          //jei ne laukiam ar apdorojam mygtuko paspaudimo laiką
            {
               _delay_ms(101.5); // laukiam 1/10 s (pataisa dėl taktinio dažnio netiklumo)
               if ( laikas == 0 ) // jei mygtukas nebuvo nuspaustas mirktelim kas 5 s
                  {
                    if ( ( j % 50) == 0 ) //mirktelim kas 5 s
                       PORTB |= _BV(led);
                    if ( ( j % 50) == 1 )
                       PORTB &=~ _BV(led);
                  }
               else // jei mygtukas nuspaustas buvo trumpiau 3 s pilam maistą, jei ilgiau rašom naują reikšmę į eeprom
                  {
                    if ( laikas < 30 )
                      pilam();
                    else
                      irasom(laikas);
                    laikas = 0; //mygtuko paspaudimas apdorotas
                  }
           }
         else //mygtukas paspaustas
           {
             laikas++;
             if (laikas >= 30) // po 3s pradedam mirksėt
               {
                 if ( ( laikas % 10) == 0 ) //mirktelim kas 1 s
                   PORTB |= _BV(led);
                 if ( ( laikas % 10) == 1 )
                   PORTB &=~ _BV(led);
               }
             _delay_ms(101.5);
           }
     }
  }
  return 0;
}

int main(void)
{
   DDRB |= _BV(variklis);
   DDRB |= _BV(led);
   PINB |= _BV(variklis);
   PINB |= _BV(led);
   PORTB &=~ _BV(led);
   PORTB &=~ _BV(variklis);
   PORTB &=~ _BV(mygt);
   laukiam(10); //laukiam 10 min
   pilam();
   laukiam(330); //laukiam 5.5 h
   pilam();
   laukiam(330); //laukiam 5.5 h
   pilam();
   laukiam(600); 
}

 

Parašykite komentarą

El. pašto adresas nebus skelbiamas.

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.