3 speed2?cesu2?
5ÓÉÓÚ±¾Éè¼ÆÖÐËù²ÉÓõÄÖ±Á÷µç»ú¶î¶¨Ëٶȴﵽ500ת/·Ö£¬ÒѾ³¬³öÁËÒ»¸ö×ֽڵķ¶Î§£¬ÓÃÕâ¸öÊýÖµ½øÐÐÆ«²î¼ÆËãÈÔÈ»ÐèÒª¶¨ÒåÒ»¸ö16λµÄÕûÐαäÁ¿À´±íʾ£¬²¢²»Äܼò»¯¼ÆËãÁ¿¡£ÔÚ500ת/·ÖµÄ¶î¶¨×ªËÙÏÂÄܲ⵽µÄÂö³å¸öÊýÄÜ´ïµ½834£¬Êä³ö¿ØÖÆÁ¿ÊÇ8λPWMµÄÕ¼¿Õ±È£¬Æ䷶ΧÊÇ0µ½255£¬ÎªÁËÌá¸ß¿ØÖƾ«¶È£¬ÔÚ¼ÆËã×óµç»úËÙ¶ÈÆ«²îʱ²ÉÓÃÁ˲âÁ¿Âö³åÊý£¬Õâ¾ÍÒªÇó½«×óµç»úµÄÉ趨ËÙ¶Èת»¯³É0.1Ãëϵ¥Æ¬»úÓ¦¼ÆµÄ±ê×¼Âö³å¸öÊýshd½øÐÐÆ«²î¼ÆËã¡£ÀýÈçÒªÇóµç»úµÄתËÙΪshj£¬
Æäת»¯¹«Ê½Îª£º
5 shd?shj?
3¿ªÊ¼ i ×Ô¼Ó1 ½«T2¼ÆÊýÖµ´æÈëÊý×é CS1²¢½«T2Çå0 ½«T3¼ÆÊýÖµ´æÈëÊý×é CS2²¢½«T3Çå0 TF4Çå0 i>=4 Ñ¡³öCS1ÖÐ×î´ó×îСֵ ¼ÆËãcesu1 Ñ¡³öCS2ÖÐ×î´ó×îСֵ ¼ÆËãcesu2 ½«iÇå0£¬jÖÃ1 ÖжϷµ»Ø
ͼ7.2 ²âËÙ×Ó³ÌÐòÁ÷³Ìͼ
7.2.3 Ö÷³ÌÐò
PID¿ØÖÆËã·¨ÊÇÔÚÖ÷³ÌÐòÖÐÍê³ÉµÄ¡£ÔÚÖ÷³ÌÐòÖв»¶ÏµØÒÔ0.1ÃëµÄÖÜÆÚÑ»·¼ÆËã¿ØÖÆÁ¿£¬¼´Ö÷´Óµç»úPWMµÄÕ¼¿Õ±È£¬Í¨¹ý¸Ä±äÕ¼¿Õ±ÈÀ´µ÷½Úµç»úµÄËٶȡ£ÆäÁ÷³ÌͼÈçͼ7.4Ëùʾ¡£
j×÷ΪÖ÷³ÌÐòµÄÑ»·±êÖ¾£¬Ã¿µ±Timer4Ñ»·4´Î(¼Æʱ0.1Ãë)ʱÔÚT4ÖжÏÖб»ÖÃ1£¬ÔÚÖ÷³ÌÐòÖнøÈëifÓï¾äÖ´ÐÐÒ»´Î¿ØÖÆËã·¨£¬²¢±»Çå0¡£ÏÂÒ»´ÎÖ÷³ÌÐòÑ»·¹ýÀ´Ê±ifÓï¾ä¾Í²»»áÔÙÖ´ÐÐÁË£¬Ö±µ½¹ýÁË0.1ÃëºójÔٴα»ÖÃ1£¬ÕâÑù¾Í±£Ö¤ÁË0.1ÃëÄÚÖ»¼ÆËãÒ»´Î¡£
ÔÚÖ÷³ÌÐòÖУ¬×óµç»úµÄÉ趨ËÙ¶Èת»¯³ÉµÄ±ê×¼Âö³åÊý¼õÈ¥Æäʵ²âÂö³åÊý£¬Æä½á¹û×÷Ϊµ±Ç°Ê±¿ÌÖ÷µç»úµÄËÙ¶ÈÆ«²îÖµ£¬´Óµç»ú°ÑÖ÷µç»úµÄʵ²âÂö³åÊý×÷Ϊ×Ô¼ºµÄÉ趨ËÙ¶ÈÖµ£¬ÓÃÆä¼õÈ¥´Óµç»úµÄʵ²âÂö³åÊý£¬½á¹û×÷ΪÆ䵱ǰʱ¿ÌµÄËÙ¶ÈÆ«²îÖµ£¬ÒÔʵÏÖ¸ú×ÙÖ÷µç»ú¡£
¸Ä½øµÄPIDËã·¨²ÉÓÃÁËÓöÏÞÏ÷Èõ»ý·Ö·¨ºÍ»ý·Ö·ÖÀë·¨¡£Ö÷µç»ú»ý·Ö±¥ºÍµÄÌõ¼þΪ£ºe13>300»òu1=255ÇÒe13>0£¬ ¼´µ±×óµç»úËÙ¶ÈÆ«²î´ïµ½300»òÖ÷µç»ú¿ØÖÆÁ¿ÒÑ´ïµ½ÉÏÏÞÇÒÆ«²îΪÕýʱ£¬³ýÈ¥Ö÷µç»ú¿ØÖÆËã·¨ÖеĻý·ÖÏî¡£´Óµç»ú»ý·Ö±¥ºÍµÄÌõ¼þΪ£ºe23>300»òu2=255ÇÒe23>0£¬¼´µ±ÓÒµç»úËÙ¶ÈÆ«²î´ïµ½200»òÓÒµç»ú¿ØÖÆÁ¿ÒÑ´ïµ½ÉÏÏÞÇÒÆ«²îΪÕýʱ£¬³ýÈ¥´Óµç»ú¿ØÖÆËã·¨ÖеĻý·ÖÏî¡£
ΪÁ˱ÜÃâÖ÷´Óµç»úÎȶ¨Çé¿öÏÂƵ·±µØÐ޸ĿØÖÆÁ¿²¢¼õС¼ÆË㹤×÷Á¿£¬Ö÷³ÌÐò²ÉÓÃÁË´øËÀÇøµÄ¿ØÖÆËã·¨£¬µ±Ö÷´Óµç»úµÄËÙ¶ÈÆ«²îÂú×ãÒÔÏÂÌõ¼þ|ei3|<2ÇÒ|ei3-ei2|<2ʱ£¬ÈÏΪÖ÷´Óµç»úËٶȴ¦ÔÚÎȶ¨ÓòÄÚ£¬²»Ö´ÐÐÐ޸ĿØÖÆÁ¿µÄÖ¸Áî¡£
¿ª ʼ Ö÷µç»úËٶȳõʼֵÉ趨 ¿ØÖƲÎÊý³õʼÉèÖà J=1 ¼ÆËãÖ÷µç»ú½üÈý´ÎËÙ¶ÈÆ«²î ¼ÆËã´Óµç»ú½üÈý´ÎËÙ¶ÈÆ«²î Ö÷µç»ú»ý·Ö±¥ºÍ K1=0È¥³ýÖ÷µç»ú»ý·ÖÏî ´Óµç»ú»ý·Ö±¥ºÍ K2=0È¥³ý´Óµç»ú»ý·ÖÏî Ö÷µç»úÆ«²îÎȶ¨ÓòÄÚ ¼ÆËãÖ÷µç»ú¿ØÖÆÁ¿u1 ´Óµç»úÆ«²îÎȶ¨ÓòÄÚ ¼ÆËã´Óµç»ú¿ØÖÆÁ¿u2
ͼ7.3 Ö÷³ÌÐòÁ÷³Ìͼ
7.3 ×ܳÌÐò
#include \typedef unsigned int uint; typedef unsigned char uchar; typedef unsigned long ulong;
uint cesu1=0,cesu2=0; //0.1ÃëËù²âÖ÷´Óµç»úµÄÂö³å¸öÊý uchar temppage;
uchar i=0,j=0; //iΪT4Ñ»·±êÖ¾£¬jΪÖ÷³ÌÐòÔËËã±êÖ¾ uchar cs1[4],cs2[4]; //cs1,cs2±£´æÖ÷´Óµç»úµÄËÙ¶ÈÂö³å uchar js[3],fs[6]; //·¢ËͺͽÓÊÕÊý¾ÝÊý×é
uint shd,shj; //Ö÷µç»úÉ趨Ëٶȼ°¶ÔÓ¦µÄ±ê×¼Âö³åÖµ uint speed1=0,speed2=0; //Ö÷´Óµç»úʵ¼ÊËÙ¶È
xdata float T1,T2,Ti1,Ti2,Td1,Td2; //²ÉÑù»ý·Ö΢·Öʱ¼ä³£Êý xdata float A11,A12,A13,A21,A22,A23,Kp1,Kp2; //PIDÔËËãϵÊý
void t4ISR(); //T4ÖжϳÌÐò˵Ã÷
void pwm_set() //PCA0³õʼ»¯ {
SFRPAGE=0x00; //PCA0ÌØÊ⹦ÄܼĴæÆ÷ËùÔÚ·ÖÒ³ PCA0MD=0X04; //½ûÖ¹PCA¶¨Ê±Æ÷Öжϣ¬Ê±»ùΪTimer0 PCA0CPM0=0X42; //Ä£¿é0£º8ΪPWMģʽ£¬½ûÖ¹ÖÐ¶Ï PCA0CPL0=0XFF; //PWM0¸³³õÖµ PCA0CPH0=0XFF;
PCA0CPM1=0X42; //Ä£¿é1£º8λPWM£¬½ûÖ¹ÖÐ¶Ï PCA0CPL1=0XFF; //PWM1¸³³õÖµ