久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7228|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

自己做的雙輪自平衡小車

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
控制器:ATmega16;8MHz;
加速度傳感器:MMA2260;陀螺儀:EWTS82;
傳感器的融合:卡爾曼濾波;
馬達(dá):EN_2342CR(速比64)+雙路12脈沖編碼器+CD40106對(duì)信號(hào)整形;
驅(qū)動(dòng)板芯片:CD4001+IR2111+IRF1404(驅(qū)動(dòng)電流可以很大);
制作資料在附件壓縮包里面,另外這篇文章http://www.zg4o1577.cn/bbs/dpj-47882-1.html 供參考

自己做的自平衡小車,基本達(dá)到預(yù)期效果,圖片(拍攝效果不佳)及文件如下,視頻請(qǐng)見(jiàn):
http://v.youku.com/v_show/id_XMTc3ODg0Mjky.html
http://v.youku.com/v_show/id_XMTgxNTAxOTA4.html
http://v.youku.com/v_show/id_XMTgxNTAzMTI4.html
資料供大家參考;


照片 (原文件名:RII_2.jpg)


照片 (原文件名:RII_1.jpg)


照片 (原文件名:RII_3.jpg)


今天做了取消馬達(dá)轉(zhuǎn)速傳感器的測(cè)試,利用PWM的值低通濾波后代替轉(zhuǎn)速信號(hào),也可以穩(wěn)定控制,但在移動(dòng)距離偏差較大時(shí)不能修正,小范圍內(nèi)和利用傳感器閉環(huán)控制差不多;源文件如下
  1. //MCU:Mega16;晶振:8MHz;
  2. //PWM:4KHz;濾波器頻率:100Hz;系統(tǒng)頻率:100Hz;10ms;
  3. //趙國(guó)霖:10.05.10;
  4. #include
  5. #include
  6. #include

  7. //#define checkbit(var,bit)     (var&(0x01<<(bit)))     /*定義查詢位函數(shù)*/
  8. //#define setbit(var,bit)     (var|=(0x01<<(bit)))     /*定義置位函數(shù)*/
  9. //#define clrbit(var,bit)     (var&=(~(0x01<<(bit)))) /*定義清零位函數(shù)*/


  10. //-------------------------------------------------------
  11. //輸出端口初始化
  12. void PORT_initial(void)
  13. {
  14.         DDRA=0B00000000;
  15.         PINA=0X00;
  16.         PORTA=0X00;
  17.         
  18.         DDRB=0B00000000;
  19.         PINB=0X00;
  20.         PORTB=0X00;
  21.         
  22.         DDRC=0B00010000;
  23.         PINC=0X00;
  24.         PORTC=0X00;
  25.         
  26.         DDRD=0B11110010;
  27.         PIND=0X00;
  28.         PORTD=0X00;
  29. }


  30. //-------------------------------------------------------
  31. //定時(shí)器1初始化
  32. void T1_initial(void)                                       
  33. {
  34.         TCCR1A|=(1<<com1a1)|(1<<wgm10)|(1<<com1b1); t1:8位快速pwm模式、匹配時(shí)清0,top時(shí)置位
  35.         TCCR1B|=(1<<wgm12)|(1<<cs11); pwm:8分頻:8m="" 8="" 256="4KHz;
  36. }


  37. //-------------------------------------------------------
  38. //定時(shí)器2初始化
  39. void T2_initial(void)                        //T2:計(jì)數(shù)至OCR2時(shí)產(chǎn)生中斷
  40. {
  41.         OCR2=0X4E;                        //T2:計(jì)數(shù)20ms(0X9C)10ms(0X4E)時(shí)產(chǎn)生中斷;
  42.         TIMSK|=(1<<ocie2);
  43.         TCCR2|=(1<<wgm21)|(1<<cs22)|(1<<cs21)|(1<<cs20); ctc模式,1024分頻
  44. }


  45. //-------------------------------------------------------
  46. //外部中斷初始化
  47. void INT_initial(void)
  48. {
  49.         MCUCR|=(1<<isc01)|(1<<isc00)|(1<<isc11)|(1<<isc10); int0、int1上升沿有效
  50.         GICR|=(1<<int0)|(1<<int1); 外部中斷使能
  51. }


  52. //-------------------------------------------------------
  53. //串口初始化;
  54. void USART_initial( void )
  55. {        
  56.         UBRRH = 0X00;
  57.         UBRRL = 51;                //f=8MHz;設(shè)置波特率:9600:51;19200:25;
  58.         UCSRB = (1<<rxen)|(1<<txen); 接收器與發(fā)送器使能;
  59.         UCSRC = (1<<ursel)|(1<<ucsz0)|(1<<ucsz1); 設(shè)置幀格式:="" 8="" 個(gè)數(shù)據(jù)位,="" 1="" 個(gè)停止位;
  60.         
  61.         UCSRB|=(1<<rxcie); usart接收中斷使能
  62. }


  63. //-------------------------------------------------------
  64. //串口發(fā)送數(shù)據(jù);
  65. void USART_Transmit( unsigned char data )
  66. {
  67.         while ( !( UCSRA & (1<<udre))); 等待發(fā)送緩沖器為空;
  68.         UDR = data;                //將數(shù)據(jù)放入緩沖器,發(fā)送數(shù)據(jù);
  69. }


  70. //-------------------------------------------------------
  71. //串口接收數(shù)據(jù)中斷,確定數(shù)據(jù)輸出的狀態(tài);
  72. #pragma interrupt_handler USART_Receive_Int:12
  73. static char USART_State;
  74. void USART_Receive_Int(void)
  75. {
  76.         USART_State=UDR;//USART_Receive();
  77. }


  78. //-------------------------------------------------------
  79. //計(jì)算LH側(cè)輪速:INT0中斷;
  80. //-------------------------------------------------------
  81. static int speed_real_LH;
  82. //-------------------------------------------------------
  83. #pragma interrupt_handler SPEEDLHINT_fun:2
  84. void SPEEDLHINT_fun(void)
  85. {
  86.         if (0==(PINB&BIT(0)))
  87.         {
  88.                 speed_real_LH-=1;
  89.         }
  90.         else
  91.         {
  92.                 speed_real_LH+=1;
  93.         }
  94. }


  95. //-------------------------------------------------------
  96. //計(jì)算RH側(cè)輪速,:INT1中斷;
  97. //同時(shí)將輪速信號(hào)統(tǒng)一成前進(jìn)方向了;
  98. //-------------------------------------------------------
  99. static int speed_real_RH;
  100. //-------------------------------------------------------
  101. #pragma interrupt_handler SPEEDRHINT_fun:3
  102. void SPEEDRHINT_fun(void)
  103. {
  104.         if (0==(PINB&BIT(1)))
  105.         {
  106.                 speed_real_RH+=1;
  107.         }
  108.         else
  109.         {
  110.                 speed_real_RH-=1;
  111.         }
  112. }


  113. //-------------------------------------------------------
  114. //ADport采樣:10位,采樣基準(zhǔn)電壓Aref
  115. //-------------------------------------------------------
  116. static int AD_data;
  117. //-------------------------------------------------------
  118. int ADport(unsigned char port)
  119. {
  120.         ADMUX=port;
  121.         ADCSRA|=(1<<aden)|(1<<adsc)|(1<<adps1)|(1<<adps0); 采樣頻率為8分頻;
  122.         while(!(ADCSRA&(BIT(ADIF))));
  123.         AD_data=ADCL;
  124.         AD_data+=ADCH*256;
  125.         AD_data-=512;
  126.         return (AD_data);
  127. }


  128. //*
  129. //-------------------------------------------------------
  130. //Kalman濾波,8MHz的處理時(shí)間約1.8ms;
  131. //-------------------------------------------------------
  132. static float angle, angle_dot;                 //外部需要引用的變量
  133. //-------------------------------------------------------
  134. static const float Q_angle=0.001, Q_gyro=0.003, R_angle=0.5, dt=0.01;
  135.                         //注意:dt的取值為kalman濾波器采樣時(shí)間;
  136. static float P[2][2] = {
  137.                                                         { 1, 0 },
  138.                                                         { 0, 1 }
  139.                                                 };
  140.         
  141. static float Pdot[4] ={0,0,0,0};

  142. static const char C_0 = 1;

  143. static float q_bias, angle_err, PCt_0, PCt_1, E, K_0, K_1, t_0, t_1;
  144. //-------------------------------------------------------
  145. void Kalman_Filter(float angle_m,float gyro_m)                        //gyro_m:gyro_measure
  146. {
  147.         angle+=(gyro_m-q_bias) * dt;
  148.         
  149.         Pdot[0]=Q_angle - P[0][1] - P[1][0];
  150.         Pdot[1]=- P[1][1];
  151.         Pdot[2]=- P[1][1];
  152.         Pdot[3]=Q_gyro;
  153.         
  154.         P[0][0] += Pdot[0] * dt;
  155.         P[0][1] += Pdot[1] * dt;
  156.         P[1][0] += Pdot[2] * dt;
  157.         P[1][1] += Pdot[3] * dt;
  158.         
  159.         
  160.         angle_err = angle_m - angle;
  161.         
  162.         
  163.         PCt_0 = C_0 * P[0][0];
  164.         PCt_1 = C_0 * P[1][0];
  165.         
  166.         E = R_angle + C_0 * PCt_0;
  167.         
  168.         K_0 = PCt_0 / E;
  169.         K_1 = PCt_1 / E;
  170.         
  171.         t_0 = PCt_0;
  172.         t_1 = C_0 * P[0][1];

  173.         P[0][0] -= K_0 * t_0;
  174.         P[0][1] -= K_0 * t_1;
  175.         P[1][0] -= K_1 * t_0;
  176.         P[1][1] -= K_1 * t_1;
  177.         
  178.         
  179.         angle        += K_0 * angle_err;
  180.         q_bias        += K_1 * angle_err;
  181.         angle_dot = gyro_m-q_bias;
  182. }
  183. //*/

  184. /*
  185. //-------------------------------------------------------
  186. //互補(bǔ)濾波
  187. //-------------------------------------------------------
  188. static float angle,angle_dot;                 //外部需要引用的變量
  189. //-------------------------------------------------------        
  190. static float bias_cf;
  191. static const float dt=0.01;
  192. //-------------------------------------------------------
  193. void complement_filter(float angle_m_cf,float gyro_m_cf)
  194. {
  195.         bias_cf*=0.998;                        //陀螺儀零飄低通濾波;500次均值;
  196.         bias_cf+=gyro_m_cf*0.002;
  197.         angle_dot=gyro_m_cf-bias_cf;
  198.         angle=(angle+angle_dot*dt)*0.90+angle_m_cf*0.05;        
  199.         //加速度低通濾波;20次均值;按100次每秒計(jì)算,低通5Hz;
  200. }
  201. */        




  202. //-------------------------------------------------------
  203. //AD采樣;
  204. //以角度表示;
  205. //加速度計(jì):1.2V=1g=90°;滿量程:1.3V~3.7V;
  206. //陀螺儀:0.5V~4.5V=-80°~+80°;滿量程5V=200°=256=200°;
  207. //-------------------------------------------------------
  208. static float gyro,acceler;
  209. //-------------------------------------------------------
  210. void AD_calculate(void)
  211. {
  212.         
  213.         acceler=ADport(2)+28;                        //角度校正
  214.         gyro=ADport(3);        
  215.         
  216.         acceler*=0.004069;                //系數(shù)換算:2.5/(1.2*512);
  217.         acceler=asin(acceler);
  218.         gyro*=0.00341;                        //角速度系數(shù):(3.14/180)* 100/512=0.01364;        
  219.         
  220.         Kalman_Filter(acceler,gyro);
  221.         //complement_filter(acceler,gyro);
  222. }
  223.         


  224. //-------------------------------------------------------
  225. //PWM輸出
  226. //-------------------------------------------------------
  227. void PWM_output (int PWM_LH,int PWM_RH)
  228. {
  229.         if (PWM_LH<0)
  230.         {
  231.                 PORTD|=BIT(6);
  232.                 PWM_LH*=-1;
  233.         }
  234.         else
  235.         {
  236.                 PORTD&=~BIT(6);
  237.         }
  238.         
  239.         if (PWM_LH>252)
  240.         {
  241.                 PWM_LH=252;
  242.         }
  243.         
  244.         
  245.         if (PWM_RH<0)
  246.         {
  247.                 PORTD|=BIT(7);
  248.                 PWM_RH*=-1;
  249.         }
  250.         else
  251.         {
  252.                 PORTD&=~BIT(7);
  253.         }
  254.         
  255.         if (PWM_RH>252)
  256.         {
  257.                 PWM_RH=252;
  258.         }
  259.         
  260.                
  261.         OCR1AH=0;
  262.         OCR1AL=PWM_LH;                        //OC1A輸出;
  263.         
  264.         OCR1BH=0;
  265.         OCR1BL=PWM_RH;                        //OC1B輸出;
  266.         
  267. }




  268. //-------------------------------------------------------
  269. //計(jì)算PWM輸出值
  270. //車輛直徑:76mm; 12*64pulse/rev; 1m=3216pulses;
  271. //-------------------------------------------------------        
  272. //static int speed_diff,speed_diff_all,speed_diff_adjust;
  273. //static float K_speed_P,K_speed_I;
  274. static float K_voltage,K_angle,K_angle_dot,K_position,K_position_dot;
  275. static float K_angle_AD,K_angle_dot_AD,K_position_AD,K_position_dot_AD;
  276. static float position,position_dot;
  277. static float position_dot_filter;
  278. static float PWM;
  279. static int speed_output_LH,speed_output_RH;
  280. static int Turn_Need,Speed_Need;
  281. //-------------------------------------------------------        
  282. void PWM_calculate(void)        
  283. {
  284.         if ( 0==(~PINA&BIT(1)) )        //左轉(zhuǎn)
  285.         {
  286.                 Turn_Need=-40;
  287.         }
  288.         else if ( 0==(~PINB&BIT(2)) )         //右轉(zhuǎn)
  289.         {
  290.                 Turn_Need=40;
  291.         }
  292.         else        //不轉(zhuǎn)
  293.         {
  294.                 Turn_Need=0;
  295.         }
  296.         
  297.         if ( 0==(~PINC&BIT(0)) )        //前進(jìn)
  298.         {
  299.                 Speed_Need=-2;
  300.         }
  301.         else if ( 0==(~PINC&BIT(1)) )        //后退
  302.         {
  303.                 Speed_Need=2;
  304.         }
  305.         else        //不動(dòng)
  306.         {
  307.                 Speed_Need=0;
  308.         }
  309.         
  310.         K_angle_AD=ADport(4)*0.007;
  311.         K_angle_dot_AD=ADport(5)*0.007;
  312.         K_position_AD=ADport(6)*0.007;
  313.         K_position_dot_AD=ADport(7)*0.007;

  314.         position_dot=speed_output_RH*0.04;
  315.         
  316.         position_dot_filter*=0.9;                //車輪速度濾波
  317.         position_dot_filter+=position_dot*0.1;        
  318.         
  319.         position+=position_dot_filter;
  320.         //position+=position_dot;        
  321.         position+=Speed_Need;
  322.         
  323.         if (position<-768)                //防止位置誤差過(guò)大導(dǎo)致的不穩(wěn)定
  324.         {
  325.                 position=-768;
  326.         }
  327.         else if  (position>768)
  328.         {
  329.                 position=768;
  330.         }
  331.         
  332.         PWM = K_angle*angle *K_angle_AD + K_angle_dot*angle_dot *K_angle_dot_AD +
  333.                                         K_position*position *K_position_AD + K_position_dot*position_dot_filter *K_position_dot_AD;
  334.         
  335.         
  336.         speed_output_RH = PWM - Turn_Need;
  337.         speed_output_LH = - PWM - Turn_Need ;
  338.         
  339.         /*
  340.         speed_diff=speed_real_RH-speed_real_LH;                        //左右輪速差PI控制;
  341.         speed_diff_all+=speed_diff;
  342.         speed_diff_adjust=(K_speed_P*speed_diff+K_speed_I*speed_diff_all)/2;
  343.         */
  344.                
  345.         PWM_output (speed_output_LH,speed_output_RH);        
  346. }

  347. //-------------------------------------------------------
  348. //定時(shí)器2中斷處理
  349. //-------------------------------------------------------
  350. static unsigned char temp;
  351. //-------------------------------------------------------
  352. #pragma interrupt_handler T2INT_fun:4
  353. void T2INT_fun(void)                                                
  354. {
  355.         AD_calculate();
  356.         
  357.         PWM_calculate();
  358.         
  359.         if(temp>=4)                        //10ms即中斷;每秒計(jì)算:100/4=25次;
  360.         {               
  361.                 if (USART_State==0X30)                //ASCII碼:0X30代表字符'0'
  362.                 {
  363.                         USART_Transmit(angle*57.3+128);
  364.                         USART_Transmit(angle_dot*57.3+128);
  365.                         USART_Transmit(128);        
  366.                 }
  367.                 else if(USART_State==0X31)                //ASCII碼:0X30代表字符'1'
  368.                 {
  369.                         USART_Transmit(speed_output_LH+128);
  370.                         USART_Transmit(speed_output_RH+128);                        
  371.                         USART_Transmit(128);
  372.                 }
  373.                 else if(USART_State==0X32)                //ASCII碼:0X30代表字符'2'
  374.                 {
  375.                         USART_Transmit(speed_real_LH+128);
  376.                         USART_Transmit(speed_real_RH+128);
  377.                         USART_Transmit(128);
  378.                 }
  379.                 else if(USART_State==0X33)                //ASCII碼:0X30代表字符'3'
  380.                 {
  381.                         USART_Transmit(K_angle+128);
  382.                         USART_Transmit(K_angle_dot+128);
  383.                         USART_Transmit(K_position_dot+128);
  384.                 }                                
  385.                 temp=0;                                
  386.         }
  387.         speed_real_LH=0;
  388.         speed_real_RH=0;        
  389.         temp+=1;        
  390. }



  391. //-------------------------------------------------------
  392. int i,j;
  393. //-------------------------------------------------------
  394. void main(void)
  395. {
  396.         PORT_initial();
  397.         T2_initial();
  398.         INT_initial();
  399.         USART_initial ();
  400.         
  401.         SEI();
  402.         
  403.         K_position=0.8 * 0.209;                //換算系數(shù):(256/10) * (2*pi/(64*12))=0.20944;//256/10:電壓換算至PWM,256對(duì)應(yīng)10V;
  404.         K_angle=34 * 25.6;                //換算系數(shù):256/10 =25.6;
  405.         K_position_dot=1.09 * 20.9;                //換算系數(shù):(256/10) * (25*2*pi/(64*12))=20.944;
  406.         K_angle_dot=2 * 25.6;                //換算系數(shù):256/10 =25.6;
  407.         
  408.         for (i=1;i<=500;i++)                //延時(shí)啟動(dòng)PWM,等待卡爾曼濾波器穩(wěn)定
  409.         {
  410.                 for (j=1;j<=300;j++);;
  411.                
  412.         }
  413.         T1_initial();
  414.                
  415.         while(1)
  416.         {
  417.                 ;
  418.         }
  419. }
復(fù)制代碼

OK:其實(shí)控制很簡(jiǎn)單,利用定時(shí)器產(chǎn)生10ms中斷,每次中斷進(jìn)行如下工作:
1:AD采樣加速度傳感器和陀螺儀,然后卡爾曼濾波得出角度與角速度;(濾波模塊借鑒老外的)(互補(bǔ)濾波效果感覺(jué)不是很好);
2:計(jì)算車輪的速度,積分得出位置;
3:利用PD算法得出PWM值=K1*angle + K2*angle_dot + K3*speed + K4 * position;
4:前進(jìn)后退給定參考速度計(jì)算即可;
注:
1:增量式輪速傳感器A相中斷,讀取B相電位判斷前進(jìn)還是后退,在10ms的時(shí)間內(nèi)累加,計(jì)算車輪的速度;
2:由于10ms累加的輪速信號(hào)不多,直接計(jì)算車體會(huì)發(fā)抖,所以增加了低通濾波,解決問(wèn)題;
3:我在外面增加4個(gè)電位器可以手動(dòng)調(diào)節(jié)4個(gè)K值,方便調(diào)試;
以上;

附件的文件夾里面有matlab建模的資料,可以求出所需的4個(gè)K的值,(參考NXT的),大家可自行調(diào)試K值看看對(duì)車輛的影響;

回復(fù)hahahagg
環(huán)路控制怎么這么慢啊?
振蕩很久才穩(wěn)定...
-----------------------------------------------------------------------

其實(shí)我也在思考,可能原因:
1:對(duì)速度做了濾波導(dǎo)致相位延遲;
2:傾斜角速度和車輪速度的K值不夠大;
經(jīng)實(shí)踐:K值增大后,振蕩減小;:)

回復(fù)format
敢問(wèn)樓主的車輪和電機(jī)哪里買的?
價(jià)格?
-----------------------------------------------------------------------

電機(jī)在淘寶上買二手的,大幾十元一個(gè),因?yàn)榭紤]到減速器,而且?guī)鞲衅鳎?br /> 其實(shí)后面實(shí)踐得知可以不要位置傳感器,這樣選擇電機(jī)的空間就很大了,買便宜的;
建議:
1:電機(jī)扭矩要大;說(shuō)白了,功率要大;轉(zhuǎn)動(dòng)慣量大似乎的更穩(wěn)定,所以不用空心杯的也許更好;
2:減速比可以大一點(diǎn),用較大的輪子;
3:重心越靠下,抗擾性越強(qiáng);但是可能會(huì)影響穩(wěn)定性;

只是刪除了RS232通訊和多余的注釋(包括互補(bǔ)濾波),效果和原來(lái)的一樣,這個(gè)是沒(méi)有速度傳感器的版本;片內(nèi)8M振蕩器: 無(wú)速度傳感器的精簡(jiǎn)版程序.rar (2.34 KB, 下載次數(shù): 19)

電路圖: protel99格式的電路圖_563431QMA9X5.rar (74.88 KB, 下載次數(shù): 16)

全部制作資料: 平衡小車制作資料ProjectRII.rar (1.44 MB, 下載次數(shù): 24)

</aden)|(1<<adsc)|(1<<adps1)|(1<</ursel)|(1<<ucsz0)|(1<</rxen)|(1<</int0)|(1<</isc01)|(1<<isc00)|(1<<isc11)|(1<</wgm21)|(1<<cs22)|(1<<cs21)|(1<</ocie2);
</wgm12)|(1<</com1a1)|(1<<wgm10)|(1<

評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
YJGG + 12 很給力!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:113207 發(fā)表于 2016-4-10 02:58 | 只看該作者
常用計(jì)算方法有兩種:互補(bǔ)濾波和卡爾曼濾波;都可以輸出校正后的角度與角速度;我采用的是卡爾曼濾波,考慮到單片機(jī)的運(yùn)算能力,是經(jīng)過(guò)精簡(jiǎn)的,當(dāng)然這些都是老外做的,關(guān)于卡爾曼濾波,我找了很多資料,較好的如下:
Kalman Filter Tutorial for Balancing Robot.pdf (76.47 KB, 下載次數(shù): 15) kalman_intro_chinese.pdf (539.84 KB, 下載次數(shù): 10)
互補(bǔ)濾波如下:點(diǎn)擊此處下載 filter.rar (1.22 MB, 下載次數(shù): 12)
我覺(jué)得卡爾曼的效果很好,但是初期有較大波動(dòng),要經(jīng)過(guò)一段時(shí)間才能穩(wěn)定;
http://www.docin.com/p-52169676.html
這個(gè)地方的可供參考;

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美视频 | 国产精品一区二区免费看 | 午夜一级做a爰片久久毛片 精品综合 | 久久不卡 | 日韩成人精品 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 亚洲一区二区三区四区视频 | 国产大毛片 | 国产精品美女久久久av超清 | 成人在线国产 | 欧州一区二区三区 | 久久九九99 | 欧美日韩亚洲一区 | 亚洲色欲色欲www | 日韩欧美国产一区二区三区 | 日韩中文字幕2019 | 久久伊 | 亚洲精品黄色 | 在线一区 | 欧美成视频| 91精品国产综合久久久久久丝袜 | 夜夜爽99久久国产综合精品女不卡 | 久久久久久久网 | 韩国理论电影在线 | av中文字幕在线播放 | 精品无码久久久久久国产 | 秋霞在线一区 | 久久久日韩精品一区二区三区 | 在线视频91 | 国产在线观看一区二区三区 | 中文字幕在线观看精品 | 97精品久久| 国产精品久久a | 四虎影视免费在线 | 中文字幕在线一区二区三区 | 韩国av网站在线观看 | 蜜臀网 | 亚洲日本一区二区三区四区 | 欧美成人免费电影 | 综合久久综合久久 | 日韩精品在线网站 |