<?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=20617&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-04-20T11:53:26+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=20617&amp;mode</id>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2018-04-20T11:53:26+01:00</updated>
<published>2018-04-20T11:53:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206993#p206993</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206993#p206993"/>
<title type="html"><![CDATA[Re: Regulator obrotów silnika BLDC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206993#p206993"><![CDATA[
linia 59: int rotorState = 0;<br />zmień na: volatile uint8_t rotorState = 0;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 20 kwi 2018, o 11:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bart92]]></name></author>
<updated>2018-04-18T23:15:24+01:00</updated>
<published>2018-04-18T23:15:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206956#p206956</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206956#p206956"/>
<title type="html"><![CDATA[Re: Regulator obrotów silnika BLDC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206956#p206956"><![CDATA[
Ahh, a już myślałem, że ktoś mi pomógł.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19363">Bart92</a> — 18 kwi 2018, o 23:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-18T21:28:21+01:00</updated>
<published>2018-04-18T21:28:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206950#p206950</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206950#p206950"/>
<title type="html"><![CDATA[Re: Regulator obrotów silnika BLDC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206950#p206950"><![CDATA[
<span style="color: #FF0000">Tylko dlatego, że kolega jest nowy na forum to nie poleci WARN, zamiast tego przedstawiam link do instrukcji w przyklejonym temacie<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><br /><br />jak się formatuje kod źródłowy na forum i proszę uprzejmie edytować swój post i poprawić ok?</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 kwi 2018, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bart92]]></name></author>
<updated>2018-04-18T23:14:49+01:00</updated>
<published>2018-04-18T21:17:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206948#p206948</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206948#p206948"/>
<title type="html"><![CDATA[Regulator obrotów silnika BLDC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20617&amp;p=206948#p206948"><![CDATA[
Witam!<br /><br />Mam problem z regulatorem obrotów do BLDC. <br /><br />Co już zrobiłem?<br /><br />1 sterowanie MOSFETami za pomocą drivera IR2108<br />2 silnik się kręci, ale nie ma synchro(można go zatrzymać palcem, wtedy zaczyna drgać<br />3 wstępny model porównywania BEMF z użyciem komparatora(działa)<br /><br />Z czym mam problem?<br /><br />1 synchronizacja!<br />2 start silnika<br /><br />Użyłem silnika z HDD do testów.<br />wywaliłem delaye z kodu i próbuję osiągnąć synchronizację pomiędzy pomiarami a komutacjami.<br />Efekt jest taki, że silnik po zakręceniu(a zakręciłem go fest, silnikiem lotniczym DC) zwalnia i się zatrzymuje.<br />Jak się zatrzyma, to drga chwilę i przestaje.<br />Jak go poruszę, to też drga. Ale ni cholery nie chce się zakręcić sam.<br />Kiedy wyłączę komutacje i zostawię tylko pomiar, przerwanie pięknie się robi mrugając mi ledem jak obracam silnik(nawet pomalutku)<br />Nie ma jeszcze PWM, zrobię w końcowej fazie.<br /><br />oto kod:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 10 kwi 2018<br /> *      Author: bartosz21<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />//U<br />#define U_H0 PORTB |= (1&lt;&lt;PB1)<br />#define U_H1 PORTB |= (1&lt;&lt;PB4)<br /><br />#define U_L0 PORTB &amp;= ~(1&lt;&lt;PB1)<br />#define U_L1 PORTB &amp;= ~(1&lt;&lt;PB4)<br /><br />#define U_OFF0 PORTB |= (1&lt;&lt;PB1)<br />#define U_OFF1 PORTB &amp;= ~(1&lt;&lt;PB4)<br /><br />//v<br />#define V_H0 PORTB |= (1&lt;&lt;PB2)<br />#define V_H1 PORTB |= (1&lt;&lt;PB5)<br /><br />#define V_L0 PORTB &amp;= ~(1&lt;&lt;PB2)<br />#define V_L1 PORTB &amp;= ~(1&lt;&lt;PB5)<br /><br />#define V_OFF0 PORTB |= (1&lt;&lt;PB2)<br />#define V_OFF1 PORTB &amp;= ~(1&lt;&lt;PB5)<br /><br />//w<br />#define W_H0 PORTB |= (1&lt;&lt;PB3)<br />#define W_H1 PORTB |= (1&lt;&lt;PB6)<br /><br />#define W_L0 PORTB &amp;= ~(1&lt;&lt;PB3)<br />#define W_L1 PORTB &amp;= ~(1&lt;&lt;PB6)<br /><br />#define W_OFF0 PORTB |= (1&lt;&lt;PB3)<br />#define W_OFF1 PORTB &amp;= ~(1&lt;&lt;PB6)<br /><br />//bemf<br />//#define SENSE_SUM ADMUX = (1&lt;&lt;REFS0) | (0&lt;&lt;MUX2) | (0&lt;&lt;MUX1) | (0&lt;&lt;MUX0)<br />#define SENSE_U ADMUX = (1&lt;&lt;REFS0) | (0&lt;&lt;MUX2) | (0&lt;&lt;MUX1) | (1&lt;&lt;MUX0)<br />#define SENSE_V ADMUX = (1&lt;&lt;REFS0) | (0&lt;&lt;MUX2) | (1&lt;&lt;MUX1) | (0&lt;&lt;MUX0)<br />#define SENSE_W ADMUX = (1&lt;&lt;REFS0) | (0&lt;&lt;MUX2) | (1&lt;&lt;MUX1) | (1&lt;&lt;MUX0)<br />#define SENSE_TEST ADMUX = (1&lt;&lt;REFS0) | (1&lt;&lt;MUX2) | (0&lt;&lt;MUX1) | (0&lt;&lt;MUX0)<br /><br />int a;<br />void _delay_ms_var(uint16_t a) {<br />while (a--) {<br />_delay_ms(1);<br />}<br />}<br /><br />int time = 500;<br />int start = 0;<br />int counter = 0;<br />int rotorState = 0;<br /><br />ISR(ANALOG_COMP_vect){<br />if(rotorState &lt; 5) rotorState++;<br />else rotorState = 0;<br />PORTC ^= (1&lt;&lt;PC5);<br />}<br /><br />void rotation() {<br />if(counter &gt; 100){<br />counter = 1;<br />start = 0;<br />}<br />counter++;<br /><br />switch (rotorState) {<br />case (0): {<br />U_H0;<br />U_H1;<br /><br />V_L0;<br />V_L1;<br /><br />W_OFF0;<br />W_OFF1;<br /><br />SENSE_W;<br /><br />if (start == 1) {<br />_delay_ms_var(time);<br />rotorState = 1;<br />}<br />break;<br />//PORTC ^= (1 &lt;&lt; PC5);<br />//_delay_ms_var(time);<br />//rotorState = 1;<br />}<br />case (1): {<br />U_H0;<br />U_H1;<br /><br />V_OFF0;<br />V_OFF1;<br /><br />W_L0;<br />W_L1;<br /><br />SENSE_V;<br /><br />if (start == 1) {<br />_delay_ms_var(time);<br />rotorState = 2;<br />}<br />break;<br />//PORTC ^= (1 &lt;&lt; PC5);<br />//_delay_ms_var(time);<br />//rotorState = 2;<br />}<br />case (2): {<br />U_OFF0;<br />U_OFF1;<br /><br />V_H0;<br />V_H1;<br /><br />W_L0;<br />W_L1;<br /><br />SENSE_U;<br /><br />if (start == 1) {<br />_delay_ms_var(time);<br />rotorState = 3;<br />}<br />break;<br />//PORTC ^= (1 &lt;&lt; PC5);<br />//_delay_ms_var(time);<br />//rotorState = 3;<br />}<br />case (3): {<br />U_L0;<br />U_L1;<br /><br />V_H0;<br />V_H1;<br /><br />W_OFF0;<br />W_OFF1;<br /><br />SENSE_W;<br />if (start == 1) {<br />_delay_ms_var(time);<br />rotorState = 4;<br />}<br />break;<br />//PORTC ^= (1 &lt;&lt; PC5);<br />//_delay_ms_var(time);<br />//rotorState = 4;<br />}<br />case (4): {<br />U_L0; //działa<br />U_L1;<br /><br />V_OFF0;<br />V_OFF1;<br /><br />W_H0;<br />W_H1;<br /><br />SENSE_V;<br /><br />if (start == 1) {<br />_delay_ms_var(time);<br />rotorState = 5;<br />}<br />break;<br />//PORTC ^= (1 &lt;&lt; PC5);<br />//_delay_ms_var(time);<br />//rotorState = 5;<br />}<br />case (5): {<br />U_OFF0; //działa<br />U_OFF1;<br /><br />V_L0;<br />V_L1;<br /><br />W_H0;<br />W_H1;<br /><br />SENSE_U;<br />if (start == 1) {<br />_delay_ms_var(time);<br />rotorState = 0;<br />}<br />break;<br />//PORTC ^= (1 &lt;&lt; PC5);<br />//_delay_ms_var(time);<br />//rotorState = 0;<br />}<br /><br />}<br />}<br /><br />int main(void) {<br /><br />DDRB |= (1 &lt;&lt; PB1);<br />DDRB |= (1 &lt;&lt; PB4);<br /><br />DDRB |= (1 &lt;&lt; PB2);<br />DDRB |= (1 &lt;&lt; PB5);<br /><br />DDRB |= (1 &lt;&lt; PB3);<br />DDRB |= (1 &lt;&lt; PB6);<br /><br />DDRC |= (1 &lt;&lt; PC5);<br /><br />//AC<br />ADCSRB |= (1 &lt;&lt; ACME);<br />ADCSRA &amp;= ~(1 &lt;&lt; ADEN);<br />ACSR |= (1&lt;&lt;ACIE);<br /><br /><br />sei();<br /><br />while (1) {<br />rotation();<br /><br />}<br />}[/syntax]<br /><br /> Wg mojego oka powinno być git. No bo jest 6 kroków pracy. Przy przerwaniu wywołanym komparatorem(które wykonuje się przy przecięciu BEMF wolnej cewki oraz BEMF sumy) kontroler przełącza się na kolejny krok.<br /><br />Jak wyłączę przerwania i wrzucę komutacje co 2ms, a następnie zakręcę silnikiem- wtedy sam się kręci i kręci. Dopóki go nie zatrzymam albo nie odłączę zasilania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19363">Bart92</a> — 18 kwi 2018, o 21:17</p><hr />
]]></content>
</entry>
</feed>