<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=8&amp;t=5523&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-01-12T19:15:42+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=5523&amp;mode</id>
<entry>
<author><name><![CDATA[MirkoT]]></name></author>
<updated>2014-01-12T19:15:42+01:00</updated>
<published>2014-01-12T19:15:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64811#p64811</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64811#p64811"/>
<title type="html"><![CDATA[Re: Atmega8 Silnik krokowy bip. Driver L293 Problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64811#p64811"><![CDATA[
Jest jeszcze jeden malutki problemik.<br />Jeśli wykonasz płytkę według tego schematu, albo zmontujesz na stykówce...<br />Ten układ nigdy Ci nie zadziała. Cokolwiek wgrasz do procka będzie on w stanie<br />permanentnego RESETU.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=189">MirkoT</a> — 12 sty 2014, o 19:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-01-12T18:46:38+01:00</updated>
<published>2014-01-12T18:46:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64805#p64805</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64805#p64805"/>
<title type="html"><![CDATA[Re: Atmega8 Silnik krokowy bip. Driver L293 Problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64805#p64805"><![CDATA[
Spadek wychodzi 27R * 280mA = 27 * 0,28 = 7,56V, więc dla cewki silnika zostaje 1,5V ale lepiej wstaw 2 diody  na 1A np. 1N4007 połączone szeregowo zamiast tego rezystora. 9V - 2*0,7V = 7,6V<br />Co do programu to może lepiej naskrobać coś prostszego w stylu ustaw port, czekaj, ustaw port i jak to zadziała to wiadomo, że sprzęt jest dobry i można lecieć dalej.<br />Zamiast pisać:<br />[syntax=c]int motora = PC0;<br />int motorb = PC1;<br />int button1 = PD5;<br />int button2 = PD6;<br />int button3 = PD7;<br />int button4 = PB0[/syntax]<br />i marnować cenną pamięć RAM zrób tak:<br />[syntax=c]#define motora    PC0<br />#define motorb    PC1<br />#define button1   PD5<br />#define button2   PD6<br />#define button3   PD7<br />#define button4   PB0[/syntax]<br />Myślę też że lepiej używać typy zmiennych w postaci uint8_t, int8_t, uint16_t,.. uint32_t,... int64_t. To jest to samo co chary, inty i longi, a od razu widać jaki rozmiar ma zmienna. Taka konstrukcja:<br />[syntax=c]PORTD |= 0xe0;[/syntax]<br />też utrudnia analizę kodu. Czytelniej jest:<br />[syntax=c]PORTD |= (1&lt;&lt;PD7) | (1&lt;&lt;PD6)| (1&lt;&lt;PD5);[/syntax]<br />Od razu wiadomo, które bity w rejestrze zostały ustawione. Jak się nie chce to można jeszcze tak:<br />[syntax=c]PORTD |= 0b11100000;[/syntax]<br />ale dla timera taki sposób też będzie nieczytelny<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 12 sty 2014, o 18:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-01-12T18:36:04+01:00</updated>
<published>2014-01-12T18:36:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64801#p64801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64801#p64801"/>
<title type="html"><![CDATA[Re: Atmega8 Silnik krokowy bip. Driver L293 Problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64801#p64801"><![CDATA[
Kodu nie analizowałem ale więc na jego temat się nie będę wypowiadał. Ale do dwóch rzeczy mam wątpliwości.<br /><br />Po pierwsze to podłączenie tranzystorów. Wnioskuję, że chciałeś za ich pomocą odwrócić sygnały wychodzące z PC0 i PC1. Jeśli na PC1 będzie stan wysoki to na wejściu 1A też będzie stan wysoki. Tranzystor się otworzy i ściągnie wejście 2A do masy. Czyli wszystko dobrze. Ale jeśli na PC1 będzie stan niski to oczywiście na wejściu 1A również będzie stan niski. Tranzystor zostanie zatkany.<strong>I teraz jaki stan będzie panował na wejściu 2A?</strong> Dla pewności podciągnął bym to wejście to VCC rezystorem 10k. A mosfeta zmienił na jakiś tranzystor bipolarny NPN np. BC547.<br /><br />Po drugie to zasilanie silnika z baterii. Nie wiem jaką masz baterię ale jeśli masz popularna baterię 9V 6f22 to ona ma za małą wydajność aby służyć jako zasilanie takiego silnika. Najlepiej tu sprawdził by się zasilacz o odpowiedniej wydajności np. 1A.<br />No i jeszcze ten rezystor na zasilaniu. Przecież na nim będzie powstawał dodatkowy spadek napięcia. Poza tym na samym układzie L293 powstaje spadek napięcia. Z tego co pamiętam to jest to około 1,4V. Więc może się okazać, że rezystor będzie zbędny bo napięcie na silniku będzie mniejsze od napięcia zasilania o ten spadek napięcia na L293.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 12 sty 2014, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2014-01-12T16:06:22+01:00</updated>
<published>2014-01-12T16:06:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64781#p64781</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64781#p64781"/>
<title type="html"><![CDATA[Re: Atmega8 Silnik krokowy bip. Driver L293 Problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64781#p64781"><![CDATA[
Na początek polecam obejrzeć Kurs EAGLE <!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/p/spis-tresci.html" >http://mirekk36.blogspot.com/p/spis-tresci.html</a><!-- m --> <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> to ułatwi życie nam wszystkim <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Nie jestem specjalistą ale wczoraj też się bawiłem trochę silniczkiem krokowym bipolarnym i zauważyłem że musi być odpowiednio dobrana częstotliwość pracy tegoż silnika inaczej nie będzie się kręcił tylko drżał... metodą prób i błędów powinieneś dojść do tego <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> i pytanie czy posiadasz bluebooka ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1672">Nondzu</a> — 12 sty 2014, o 16:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rudnicki8]]></name></author>
<updated>2014-01-12T15:14:12+01:00</updated>
<published>2014-01-12T15:14:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64770#p64770</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64770#p64770"/>
<title type="html"><![CDATA[Atmega8 Silnik krokowy bip. Driver L293 Problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5523&amp;p=64770#p64770"><![CDATA[
Witam! <br />Problem polega na tym, że po połączeniu całego schematu : <br /><a href="http://forum.atnel.pl/_obrazki/o/2412/00b0a02fc2a73c5352bb66af4502be8f.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/2412/00b0a02fc2a73c5352bb66af4502be8f.png" alt="Obrazek" /></a><br />silnik niestety po wciśnięciu guzików stoi w miejscu i drży. <br />Zasilanie mikroprocesora oraz L293 VCC jest z USB ASP a zasilanie silnika doprowadzone na V+ jest z baterii 9V obniżone przez rezystor 27 Ω aby było koło 7,4 V. <br />Specyfikacja silnika krokowego bipolarnego: <br /><br />Liczba kroków: 200 <br />Napięcie znamionowe: 7,4 V <br />Pobór prądu na cewkę: 280 mA <br />Rezystancja cewki 26 Ω <br />Indukcyjność uzwojenia: 19,2 mH <br />Moment trzymający 650g*cm (0,0637 Nm) <br />Średnica wału: 5 mm <br />Masa: 130 g <br />Wymiary: 35 x 35 x 26 mm (bez wału) - NEMA 14 <br /><br />Tranzystory BS170<br /> <br />Niestety jestem początkującym w mikrokontrolerach i nie wiem jak sobie poradzić z tym problemem. Poniżej zamieszczam kod programu :<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />int step_number = 0;<br />int speed = 60;<br />int direction = 0;<br />unsigned long int last_step_time = 0;<br />int number_of_steps = 200;<br />int motora = PC0;<br />int motorb = PC1;<br /><br />void step(int steps_to_move);<br />void step_motor(int which_step);<br />void initialize(void);<br />void przycisk1(void);<br />void przycisk2(void);<br />void przycisk3(void);<br />void przycisk4(void);<br /><br />int button1 = PD5;<br />int button2 = PD6;<br />int button3 = PD7;<br />int button4 = PB0;<br /><br />volatile unsigned long int millis = 0;<br />ISR(TIMER0_OVF_vect)<br />{<br />TCNT0 = 0x06; //6+250 = 256 -&gt; overflow, 250*64(prescaler)*1000 = 16 000 000; xtal = 16MHz<br />millis++;<br />}<br />//*****************************************************************************************<br />int main(void)<br />{<br />initialize();<br />sei();<br />while(1){<br />przycisk1();<br />przycisk2();<br />przycisk3();<br />przycisk4();<br />}<br />return 0;<br />}<br />//*****************************************************************************************<br />void initialize(void)<br />{<br />DDRC |= 1 &lt;&lt; motora;<br />DDRC |= 1 &lt;&lt; motorb;<br /><br />PORTD |= 0xe0;<br />PORTB |= 0x01;<br /><br />TIMSK |= 1 &lt;&lt; TOIE0;<br />TCCR0 |= 0x03;<br />}<br />//*****************************************************************************************<br />void step(int steps_to_move)<br />{<br /><br />unsigned long int step_delay = 60L * 1000L / number_of_steps /speed;<br />int steps_left;<br />if(steps_to_move &gt;= 0)<br />{<br />steps_left = steps_to_move;<br />}<br />else<br />{<br />steps_left = -steps_to_move;<br />}<br />if(steps_to_move &gt;0)<br />{<br />direction = 1;<br />}<br />if(steps_to_move &lt;0)<br />{<br />direction = 0;<br />}<br /><br />while(steps_left &gt;0)<br />{<br />if(millis - last_step_time &gt;= step_delay)<br />{<br />last_step_time = millis;<br />if(direction ==1)<br />{<br />step_number++;<br />if(step_number == number_of_steps)<br />{<br />step_number = 0;<br />}<br />}<br />else<br />{<br />if(step_number == 0)<br />{<br />step_number = number_of_steps;<br />}<br />step_number--;<br />}<br />steps_left--;<br />step_motor(step_number %4);<br />}<br />}<br />}<br /><br />//*****************************************************************************************<br />void step_motor(int which_step)<br />{<br />     switch (which_step)<br />{<br />      case 0: /* 01 */<br />      PORTC &amp;= ~(1 &lt;&lt; motora);<br />      PORTC |= 1 &lt;&lt; motorb;<br />      break;<br />      case 1: /* 11 */<br />      PORTC |= 1 &lt;&lt; motora;<br />      PORTC |= 1 &lt;&lt; motorb;<br />      break;<br />      case 2: /* 10 */<br />      PORTC |= 1 &lt;&lt; motora;<br />      PORTC &amp;= ~(1 &lt;&lt; motorb);<br />      break;<br />      case 3: /* 00 */<br />      PORTC &amp;= ~(1 &lt;&lt; motora);<br />      PORTC &amp;= ~(1 &lt;&lt; motorb);<br /> break;<br />    }<br />}<br />//*****************************************************************************************<br />void przycisk1()<br />{<br />if(!(PIND &amp; (1&lt;&lt;button1) ))<br />{<br />step(50);<br />}<br />}<br />//*****************************************************************************************<br />void przycisk2()<br />{<br />if(!(PIND &amp; (1&lt;&lt;button2) ))<br />{<br />step(-50);<br />}<br />}<br />//*****************************************************************************************<br />void przycisk3()<br />{<br />if(!(PIND &amp; (1&lt;&lt;button3) ))<br />{<br />step(1);<br />}<br />}<br />//*****************************************************************************************<br />void przycisk4()<br />{<br />if(!(PINB &amp; (1&lt;&lt;button4) ))<br />{<br />step(-1);<br />}<br />}<br /><br />//*****************************************************************************************[/syntax]<br />Silnik powinien po wciśnięciu 1 guzika zrobić 50 kroków w prawo, drugi guzik 50 kroków w lewo, 3 guzik 1 krok w prawo, 4 guzik 1 krok w lewo, ale niestety tylko drży. <br />Silnik wpinam na L293 <br />1Y - czarny przewód <br />2Y - zielony przewód <br />3Y - czerwony przewód <br />4Y - niebieski przewód <br />Próbowałem różnych kombinacji ale niestety jest tak samo. <br />Mikroprocesor jest na kwarcu 16 MHz. <br /><br />Bardzo proszę o pomoc i wyrozumiałość.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2412">rudnicki8</a> — 12 sty 2014, o 15:14</p><hr />
]]></content>
</entry>
</feed>