{"id":48,"date":"2010-06-25T18:24:00","date_gmt":"2010-06-25T15:24:00","guid":{"rendered":"https:\/\/gpstronic.com\/Martin-Nikiforov\/?p=48"},"modified":"2023-06-25T18:41:27","modified_gmt":"2023-06-25T15:41:27","slug":"%d0%b5%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d0%bc%d0%b0%d0%b3%d0%bd%d0%b8%d1%82%d0%bd%d0%b0-%d0%bb%d0%b5%d0%b2%d0%b8%d1%82%d0%b0%d1%86%d0%b8%d1%8f-%d1%81-%d0%bc%d0%b8%d0%ba%d1%80%d0%be%d0%bf%d1%80","status":"publish","type":"post","link":"https:\/\/gpstronic.com\/Martin-Nikiforov\/2010\/06\/25\/%d0%b5%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d0%bc%d0%b0%d0%b3%d0%bd%d0%b8%d1%82%d0%bd%d0%b0-%d0%bb%d0%b5%d0%b2%d0%b8%d1%82%d0%b0%d1%86%d0%b8%d1%8f-%d1%81-%d0%bc%d0%b8%d0%ba%d1%80%d0%be%d0%bf%d1%80\/","title":{"rendered":"\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0430\u0433\u043d\u0438\u0442\u043d\u0430 \u043b\u0435\u0432\u0438\u0442\u0430\u0446\u0438\u044f \u0441 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u043e\u0440\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0430\u0433\u043d\u0438\u0442\u043d\u0430 \u043b\u0435\u0432\u0438\u0442\u0430\u0446\u0438\u044f \u0441 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u043e\u0440\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 PIC16f886. \u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0441\u0435 \u0445\u043e\u043b \u0434\u0430\u0442\u0447\u0438\u043a \u0437\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u0437\u0430 \u0438\u0437\u043c\u0435\u0440\u0432\u0430\u043d\u0435 \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043b\u0435\u0432\u0438\u0442\u0438\u0440\u0430\u0449\u0438\u044f \u043c\u0430\u0433\u043d\u0438\u0442\u0435\u043d \u043e\u0431\u0435\u043a\u0442 (\u0442\u0440\u044f\u0431\u0432\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u0434\u0430 \u0438\u043c\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043e \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e \u043f\u043e\u043b\u0435 \u043a\u043e\u0435\u0442\u043e \u0434\u0430 \u0441\u0435 \u0438\u0437\u043c\u0435\u0440\u0432\u0430 \u043e\u0442 \u0434\u0430\u0442\u0447\u0438\u043a\u0430). \u0417\u0430 \u0436\u0435\u043b\u0435\u0437\u0435\u043d \u043e\u0431\u0435\u043a\u0442 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0434\u0440\u0443\u0433 \u0434\u0430\u0442\u0447\u0438\u043a \u0437\u0430 \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043f\u0440\u044f\u043c\u043e \u0431\u043e\u0431\u0438\u043d\u0430\u0442\u0430 &#8211; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0444\u0440\u0430\u0447\u0435\u0440\u0432\u0435\u043d \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u0435\u043b \u043e\u0442 \u0434\u0432\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438 \u043d\u0430 \u043e\u0431\u0435\u043a\u0442\u0430, \u043a\u043e\u0439\u0442\u043e \u043f\u0440\u0435\u043a\u044a\u0441\u0432\u0430 \u043b\u044a\u0447\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0432\u0434\u0438\u0433\u0430\u0439\u043a\u0438 \u0441\u0435 \u043d\u0430\u0433\u043e\u0440\u0435 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u043f\u043e \u0433\u043e\u043b\u044f\u043c \u043f\u043e\u0442\u043e\u043a \u0438\u043d\u0444\u0440\u0430\u0447\u0435\u0440\u0432\u0435\u043d\u0430 \u0441\u0432\u0435\u0442\u043b\u0438\u043d\u0430 \u043e\u0442\u0438\u0432\u0430\u0439\u043a\u0438 \u043d\u0430\u0434\u043e\u043b\u0443.<\/p>\n\n\n\n<iframe loading=\"lazy\" width=\"480\" height=\"390\" src=\"https:\/\/www.youtube.com\/embed\/6TjQ_aHR-Nc\" title=\"Electromagnetic levitation system\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n\n\n\n<iframe loading=\"lazy\" width=\"480\" height=\"390\" src=\"https:\/\/www.youtube.com\/embed\/bY9a9TnXnKU\" title=\"Electromagnetic Levitator\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n\n\n\n<p class=\"wp-block-paragraph\">\u0421\u0445\u0435\u043c\u0430 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440 PIC16F882:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/gpstronic.com\/site\/sites\/default\/files\/shema_0.JPG\"><img decoding=\"async\" src=\"http:\/\/gpstronic.com\/site\/sites\/default\/files\/styles\/large\/public\/shema_0.JPG?itok=ePG9THcl\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">#include &#8222;d:\\shemi\\levitator 16f886\\levitator886.h&#8220;<br>#include &#8222;STDLIB.H&#8220;<br>int pos_i=0;<br>int Kp=7,Ki=1,Kd=1;<br>int16 potenciometer;<br>int16 set_position=750;<br>int16 position;<br>signed int16 PWM_d=100;<br>signed int16 error_now;<br>signed int16 error_last=0;<br>signed int16 integral_error=0;<br>signed int16 iMAX=50,iMIN=-50;<br>signed int16 differential_error=0;<br>signed int16 dMAX=10,dMIN=-10;<br>void settings();<br>#int_EXT<br>void EXT_isr(void)<br>{<br>\/\/delay_us(100);<br>if(!input(Pin_b0)){<br>\/\/ setup_timer_2(T2_DIV_BY_1,255,1); \/\/16khz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">set_position=position;<br>output_toggle(PIN_b3);<br>}<br>return;<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#int_AD<br>void AD_isr(void)<br>{<br>\/\/pos_i++;<br>\/\/if(pos_i==5)pos_i=1;<br>position=read_adc(ADC_READ_ONLY);<br>return;<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#int_RDA<br>void RDA_isr(void)<br>{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">void main()<br>{<br>\/\/ setup_oscillator(OSC_8MHZ);<br>delay_ms(100);<br>setup_adc_ports(sAN0|sAN1|sAN2|VSS_VREF);<br>setup_adc(ADC_CLOCK_DIV_8);<br>setup_spi(SPI_SS_DISABLED);<br>setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);<br>setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">setup_timer_2(T2_DIV_BY_1,255,1); \/\/ ~16khz<br>setup_ccp1(CCP_PWM|CCP_PWM_HALF_BRIDGE|CCP_PWM_H_H|<br>CCP_SHUTDOWN_ON_INT0|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);<br>setup_ccp2(CCP_PWM);<br>set_pwm1_duty(500);<br>set_pwm2_duty(800);<br>delay_ms(1000);<br>port_b_pullups (TRUE);<br>setup_comparator(NC_NC_NC_NC);<br>delay_ms(200);<br>\/\/ enable_interrupts(INT_EXT);<br>enable_interrupts(INT_AD);<br>delay_ms(200);<br>enable_interrupts(GLOBAL);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">int i;<br>int8 analog_input=1; \/\/ 0-potentiometer 1-hall<br>set_adc_channel(analog_input);<br>delay_us(30);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ settings();<br>while(true){<br>output_toggle(PIN_B5);<br>\/\/if (analog_input==0) {potenciometer = read_adc()\/2;analog_input++;}<br>\/\/ position[0]=0;<br>\/\/ for( i=1;i&lt;5;i++){<br>\/\/ position[0]+=Position[i];<br>\/\/ }<br>\/\/ position[0]=position[0]\/4;<br>\/\/ set_adc_channel(analog_input);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/printf(&#8222;%4Ld %4Ld %4Ld \\r\\n&#8220;,error_now,position,PWM_d);<br>\/\/delay_ms(20);<br>error_now=position-set_position;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/if(error_now&gt;(error_last+dMAX))error_now=error_last+dMAX;<br>\/\/if(error_now&lt;(error_last-dMIN))error_now=error_last-dMIN;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ integral_error+=(error_now\/4);<br>\/\/ if(integral_error&gt;iMAX)integral_error=iMAX;<br>\/\/ if(integral_errordMAX)differential_error=dMAX;<br>\/\/if(differential_error1000)PWM_d=1000;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ setup_ccp1(CCP_PWM|CCP_PWM_HALF_BRIDGE|CCP_PWM_H_H|<br>\/\/CCP_SHUTDOWN_ON_INT0|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);<br>\/\/set_pwm1_duty(position[0]);\/\/ debug na pwm<br>set_pwm1_duty(PWM_d); \/\/ debug na pwm<br>read_adc(ADC_START_ONLY);<br>delay_ms(1);<br>error_last=error_now;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ delay_ms(250);<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>void settings(){<br>char setting_string[20]=&#8220;&#8220;;<br>char *ptr;<br>long timeout;<br>timeout=0;<br>\/\/printf(&#8222;settings?\\n\\r&#8220;); \/\/stop if there is no terminal<br>while(!kbhit()&amp;&amp;(++timeout&lt;50000)) delay_us(100);<br>if(!kbhit()) {<br>printf(&#8222;set_position=%Lu Kp=%u Ki=%u Kd=%u \\r\\n&#8220;,set_position,Kp,Ki,Kd);<br>\/\/ for kp kd float &#8211; printf(&#8222;set_position=%Lu Kp=%g Ki=%g Kd=%g \\r\\n&#8220;,<br>\/\/set_position,Kp,Ki,Kd);<br>delay_ms(2000);<br>return;<br>}<br>gets(setting_string);<br>printf(setting_string);<br>setting_string=&#8220;&#8220;;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">printf(&#8222;set_position:&#8220;);<br>gets(setting_string);<br>set_position=strtoul(setting_string,&amp;ptr,10);<br>printf(setting_string);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">printf(&#8222;Kp:&#8220;);<br>gets(setting_string);<br>Kp=strtof(setting_string,&amp;ptr);<br>printf(setting_string);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">printf(&#8222;Ki:&#8220;);<br>gets(setting_string);<br>Ki=strtof(setting_string,&amp;ptr);<br>printf(setting_string);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">printf(&#8222;Kd:&#8220;);<br>gets(setting_string);<br>Kd=strtof(setting_string,&amp;ptr);<br>printf(setting_string);<br>printf(&#8222;set_position=%Lu Kp=%u Ki=%u Kd=%u \\r\\n&#8220;,set_position,Kp,Ki,Kd);<br>\/\/for float parameter &#8211; printf(&#8222;set_position=%Lu Kp=%g Ki=%g Kd=%g<br>\/\/ \\r\\n&#8220;,set_position,Kp,Ki,Kd);<br>delay_ms(2000);<br>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0430\u0433\u043d\u0438\u0442\u043d\u0430 \u043b\u0435\u0432\u0438\u0442\u0430\u0446\u0438\u044f \u0441 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u043e\u0440\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 PIC16f886. \u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0441\u0435 \u0445\u043e\u043b \u0434\u0430\u0442\u0447\u0438\u043a \u0437\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u0437\u0430 \u0438\u0437\u043c\u0435\u0440\u0432\u0430\u043d\u0435 \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043b\u0435\u0432\u0438\u0442\u0438\u0440\u0430\u0449\u0438\u044f \u043c\u0430\u0433\u043d\u0438\u0442\u0435\u043d \u043e\u0431\u0435\u043a\u0442 (\u0442\u0440\u044f\u0431\u0432\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u0434\u0430 \u0438\u043c\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043e \u043c\u0430\u0433\u043d\u0438\u0442\u043d\u043e \u043f\u043e\u043b\u0435 \u043a\u043e\u0435\u0442\u043e \u0434\u0430 \u0441\u0435 \u0438\u0437\u043c\u0435\u0440\u0432\u0430 \u043e\u0442 \u0434\u0430\u0442\u0447\u0438\u043a\u0430). \u0417\u0430 \u0436\u0435\u043b\u0435\u0437\u0435\u043d \u043e\u0431\u0435\u043a\u0442 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0434\u0440\u0443\u0433 \u0434\u0430\u0442\u0447\u0438\u043a \u0437\u0430 \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043f\u0440\u044f\u043c\u043e \u0431\u043e\u0431\u0438\u043d\u0430\u0442\u0430 &#8211; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0444\u0440\u0430\u0447\u0435\u0440\u0432\u0435\u043d \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u0435\u043b \u043e\u0442 \u0434\u0432\u0435\u0442\u0435&hellip; <a class=\"more-link\" href=\"https:\/\/gpstronic.com\/Martin-Nikiforov\/2010\/06\/25\/%d0%b5%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d0%bc%d0%b0%d0%b3%d0%bd%d0%b8%d1%82%d0%bd%d0%b0-%d0%bb%d0%b5%d0%b2%d0%b8%d1%82%d0%b0%d1%86%d0%b8%d1%8f-%d1%81-%d0%bc%d0%b8%d0%ba%d1%80%d0%be%d0%bf%d1%80\/\">Continue reading <span class=\"screen-reader-text\">\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043c\u0430\u0433\u043d\u0438\u0442\u043d\u0430 \u043b\u0435\u0432\u0438\u0442\u0430\u0446\u0438\u044f \u0441 \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u043e\u0440\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,25,27],"tags":[21,23,22,20,24,18,26,28],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-uncategorized","category-25","category-27","tag-diy","tag-electronic","tag-levitation","tag-magnetic","tag-24","tag-18","tag-26","tag-28","entry"],"_links":{"self":[{"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":4,"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":52,"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/posts\/48\/revisions\/52"}],"wp:attachment":[{"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gpstronic.com\/Martin-Nikiforov\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}