wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3132|回復: 3
打印 上一主題 下一主題
收起左側(cè)

Arduino控制小米微電機(基于MCP2515)運動

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1115042 發(fā)表于 2024-4-1 20:04 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一、前言
最近接觸到一個項目需要用到小米電機,本來是想用STM32進行控制,但是必須得使用Arduino進行開發(fā),于是嘗試了一下。小米電機是基于CAN通訊的,但恰好Arduino不帶CAN通訊協(xié)議,于是難度上了一個檔次。在查閱了相關(guān)資料后,偶然間看到B站某位大佬的視頻,得到了啟發(fā),在此感謝這位大佬,并成功實現(xiàn)了目標功能,鏈接如下:www.bilibili.com/video/BV1P64y1p7hx/

二、準備
硬件:
1、MCP2515 SPI2CAN轉(zhuǎn)換器 *1
2、小米微電機 *1
3、電機轉(zhuǎn)接頭 *1
4、Arduino Nano *1
5、轉(zhuǎn)接線 *若干
6、usb to can轉(zhuǎn)換頭

知識儲備:
1、掌握Arduino開發(fā),能讀懂程序
2、了解CAN協(xié)議
3、了解小米微電機相關(guān)參數(shù),電機運轉(zhuǎn)方式

三、接線及庫的準備
參考一篇文章的CAN協(xié)議進行接線,鏈接如下:gitcodecom/autowp/arduino-mcp2515/overview?utm_source=csdn_github_accelerator&isLogin=1



注意,小米電機供電為24V,電流在額定電流左右即可。具體相關(guān)參數(shù)在小米電機手冊中查看。CAN通訊線最好雙絞。

并下載相關(guān)庫函數(shù),導入我們的library文件夾中
CAN庫需要我們另外下載,下載渠道很多,這里貼一個下載鏈接:githubcom/sandeepmistry/arduino-CAN

四、電機ID
使用usb2can轉(zhuǎn)換頭連接電腦,并進行如下設置:




五、運行代碼xm_motor.cpp

  1. #include "xm_motor.h"
  2. #include <Arduino.h>
  3. MCP2515 mcp2515(10);
  4. struct can_frame canMsg;
  5. uint32_t ExtId;             //定義can擴展id
  6. uint8_t rx_data[8];         //接收數(shù)據(jù)
  7. uint32_t Motor_Can_ID;      //接收數(shù)據(jù)電機ID
  8. static uint8_t byte_ls[4];  //轉(zhuǎn)換臨時數(shù)據(jù)
  9. uint8_t tx_data[8];         //can寫入的數(shù)據(jù)

  10. int filter(int queue[], char n)  //數(shù)值過濾
  11. {
  12.   int sum = 0;
  13.   byte i;
  14.   int maxsz = queue[0];  //尋找最大值
  15.   int minsz = queue[0];  //尋找最小值
  16.   for (i = 0; i < n; i++) {
  17.     if (maxsz < queue[i]) { maxsz = queue[i]; }  //尋找最大值和最小值
  18.     if (minsz > queue[i]) { minsz = queue[i]; }
  19.   }

  20.   for (i = 0; i < n; i++) {
  21.     sum += queue[i];
  22.   }
  23.   sum = sum - maxsz - minsz;  //去除最大值和最小值
  24.   return (sum / (n - 2));
  25. }  //數(shù)值過濾
  26. int check(byte ao_port, byte n)  //采樣
  27. {

  28.   int check_date[n];  //定義采樣數(shù)組
  29.   for (byte i = 0; i < n; ++i) {
  30.     check_date[i] = analogRead(ao_port);  //獲得指定傳感器數(shù)據(jù)
  31.   }

  32.   int vvvv = filter(check_date, n);
  33.   return vvvv;

  34. }  //采樣
  35. void xm_can_start() {

  36.   mcp2515.reset();
  37.   mcp2515.setBitrate(CAN_1000KBPS, MCP_8MHZ);
  38.   mcp2515.setNormalMode();
  39.   delay(4);
  40. }
  41. static uint8_t* Float_to_Byte(float f)  //float分解成四個byte數(shù)據(jù)
  42. {
  43.   unsigned long longdata = 0;
  44.   longdata = *(unsigned long*)&f;
  45.   byte_ls[0] = (longdata & 0xFF000000) >> 24;
  46.   byte_ls[1] = (longdata & 0x00FF0000) >> 16;
  47.   byte_ls[2] = (longdata & 0x0000FF00) >> 8;
  48.   byte_ls[3] = (longdata & 0x000000FF);
  49.   return byte_ls;
  50. }
  51. static float uint16_to_float(uint16_t x, float x_min, float x_max, int bits)  //把uint 16位數(shù)據(jù)變成浮點數(shù) 用在接受數(shù)據(jù)的處理上
  52. {
  53.   uint32_t span = (1 << bits) - 1;
  54.   float offset = x_max - x_min;
  55.   return offset * x / span + x_min;
  56. }
  57. static int float_to_uint(float x, float x_min, float x_max, int bits)  //把浮點數(shù)轉(zhuǎn)換成uint_16 用在位置 扭矩 上面
  58. {
  59.   float span = x_max - x_min;
  60.   float offset = x_min;
  61.   if (x > x_max) x = x_max;
  62.   else if (x < x_min) x = x_min;
  63.   return (int)((x - offset) * ((float)((1 << bits) - 1)) / span);
  64. }
  65. void exid_count(uint8_t Communication_Type, uint16_t msid, uint8_t can_id)  //計算擴展ExtId,Communication_Type通信類型,msid主canid,
  66. {
  67.   uint8_t msid_l = msid;
  68.   uint8_t msid_h = msid >> 8;
  69.   uint32_t di_data = ((0xFFFFFFFF & Communication_Type) << 24) | 0x00FFFFFF;  //求出高32位
  70.   uint32_t di_datab = ((0xFFFFFFFF & msid_h) << 16) | 0xFF00FFFF;             //求出高32位
  71.   uint32_t di_datac = ((0xFFFFFFFF & msid_l) << 8) | 0xFFFF00FF;              //求出高32位
  72.   uint32_t di_datad = (0xFFFFFFFF & can_id) | 0xFFFFFF00;                     //求出高32位
  73.   ExtId = (di_data & di_datab & di_datac & di_datad);
  74. }  //計算擴展ExtId,Communication_Type通信類型,msid主canid,

  75. void data_count_dcs(uint16_t Index, float Value, char Value_type) {
  76.   //計算can在 單參數(shù)寫入,通信類型 12下發(fā)送的8位數(shù)據(jù),Index 是命令類型0: 運控模式1: 位置模式2: 速度模式3: 電流模式Value是0 值,Value_type是數(shù)據(jù)類型,浮點數(shù)用f非浮點用s
  77.   //速度數(shù)值要 注明浮點數(shù) f ,
  78.   //寫入扭矩 n


  79.   canMsg.data[0] = Index;
  80.   canMsg.data[1] = Index >> 8;
  81.   canMsg.data[2] = 0x00;
  82.   canMsg.data[3] = 0x00;
  83.   if (Value_type == 'f') {
  84.     Float_to_Byte(Value);
  85.     canMsg.data[4] = byte_ls[3];
  86.     canMsg.data[5] = byte_ls[2];
  87.     canMsg.data[6] = byte_ls[1];
  88.     canMsg.data[7] = byte_ls[0];
  89.   } else if (Value_type == 's') {
  90.     canMsg.data[4] = (uint8_t)Value;
  91.     canMsg.data[5] = 0x00;
  92.     canMsg.data[6] = 0x00;
  93.     canMsg.data[7] = 0x00;
  94.   }
  95. }  //計算can在 單參數(shù)寫入,通信類型 12下發(fā)送的8位數(shù)據(jù),Index 是命令類型Value是值,Value_type是數(shù)據(jù)類型,浮點數(shù)用f非浮點用s
  96. void data_count_zero()  //can數(shù)據(jù)置零
  97. {
  98.   canMsg.data[0] = 0x00;
  99.   canMsg.data[1] = 0x00;
  100.   canMsg.data[2] = 0x00;
  101.   canMsg.data[3] = 0x00;
  102.   canMsg.data[4] = 0x00;
  103.   canMsg.data[5] = 0x00;
  104.   canMsg.data[6] = 0x00;
  105.   canMsg.data[7] = 0x00;
  106. }  //can數(shù)據(jù)置零

  107. void motor_enable(uint8_t id = 1)  //電機使能 電機canid
  108. {
  109.   exid_count(3, Master_CAN_ID, id);
  110.   canMsg.can_id = ExtId | CAN_EFF_FLAG;
  111.   canMsg.can_dlc = 8;
  112.   data_count_zero();
  113.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  114.   delay(4);
  115. }  //電機使能 電機canid
  116. void motor_mode(uint8_t id, char type)  //電機運行模式 電機canid  模式值1位置模式2速度模式 3 電流模式0運控模式
  117. {
  118.   exid_count(0x12, Master_CAN_ID, CanID);
  119.   canMsg.can_id = ExtId | CAN_EFF_FLAG;  //ExtId  0x12000001
  120.   canMsg.can_dlc = 8;
  121.   data_count_dcs(0x7005, type, 's');
  122.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  123.   delay(4);
  124. }

  125. void motor_speed_value(uint8_t id, float speed_ref) {  //設置速度模式下的參數(shù)轉(zhuǎn)速
  126.   exid_count(0x12, Master_CAN_ID, CanID);
  127.   canMsg.can_id = ExtId | CAN_EFF_FLAG;  //ExtId  0x12000001
  128.   canMsg.can_dlc = 8;
  129.   data_count_dcs(0x700A, speed_ref, 'f');
  130.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  131.   delay(4);
  132. }

  133. void motor_pos_zero(uint8_t id = 1)  //位置置0
  134. {
  135.   exid_count(6, Master_CAN_ID, id);
  136.   canMsg.can_id = ExtId | CAN_EFF_FLAG;
  137.   canMsg.can_dlc = 8;
  138.   data_count_zero();
  139.   canMsg.data[0] = 1;
  140.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  141.   delay(4);

  142. }  //位置置0
  143. void motor_pos_value(uint8_t id, float speed_ref) {  //設置位置模式下的位置
  144.   exid_count(0x12, Master_CAN_ID, CanID);
  145.   canMsg.can_id = ExtId | CAN_EFF_FLAG;  //ExtId  0x12000001
  146.   canMsg.can_dlc = 8;
  147.   data_count_dcs(0x7016, speed_ref, 'f');
  148.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  149.   delay(4);
  150. }

  151. void motor_pow_value(uint8_t id, float torque, float limit_cur, float kp = 1, float ki = 0.0158) {  //設置速度 電流限制,kp,kd
  152.   exid_count(0x12, Master_CAN_ID, CanID);
  153.   canMsg.can_id = ExtId | CAN_EFF_FLAG;  //ExtId  0x12000001
  154.   canMsg.can_dlc = 8;
  155.   data_count_dcs(0x7017, torque, 'f');
  156.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  157.   delay(4);
  158.   data_count_dcs(0x7018, limit_cur, 'f');
  159.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  160.   delay(4);
  161.   data_count_dcs(0x7010, kp, 'f');
  162.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  163.   delay(4);
  164.   data_count_dcs(0x7011, ki, 'f');
  165.   mcp2515.sendMessage(MCP2515::TXB1, &canMsg);
  166.   delay(4);
  167. }</font></font></font>
復制代碼
xm_motor.h

  1. #include "Arduino.h"
  2. #include <SPI.h>
  3. #include "mcp2515.h"

  4. #define pi 3.14159265359f
  5. #define Communication_Type_MotorEnable 0x03
  6. #define Master_CAN_ID 0x00
  7. #define CanID 0x01
  8. #define P_MIN -12.5f
  9. #define P_MAX 12.5f
  10. #define V_MIN -30.0f
  11. #define V_MAX 30.0f
  12. #define KP_MIN 0.0f
  13. #define KP_MAX 500.0f
  14. #define KD_MIN 0.0f
  15. #define KD_MAX 5.0f
  16. #define T_MIN -12.0f
  17. #define T_MAX 12.0f
  18. #define MAX_P 720
  19. #define MIN_P -720

  20. #define Communication_Type_GetID 0x00           //獲取設備的ID和64位MCU唯一標識符
  21. #define Communication_Type_MotionControl 0x01         //用來向主機發(fā)送控制指令
  22. #define Communication_Type_MotorRequest 0x02        //用來向主機反饋電機運行狀態(tài)
  23. #define Communication_Type_MotorEnable 0x03            //電機使能運行
  24. #define Communication_Type_MotorStop 0x04            //電機停止運行
  25. #define Communication_Type_SetPosZero 0x06            //設置電機機械零位
  26. #define Communication_Type_CanID 0x07                //更改當前電機CAN_ID
  27. #define Communication_Type_Control_Mode 0x12
  28. #define Communication_Type_GetSingleParameter 0x11        //讀取單個參數(shù)
  29. #define Communication_Type_SetSingleParameter 0x12        //設定單個參數(shù)
  30. #define Communication_Type_ErrorFeedback 0x15            //故障反饋幀
  31. //參數(shù)讀取宏定義
  32. #define Run_mode 0x7005        
  33. #define Iq_Ref   0x7006
  34. #define Spd_Ref  0x700A
  35. #define Limit_Torque 0x700B
  36. #define Cur_Kp 0x7010
  37. #define Cur_Ki 0x7011
  38. #define Cur_Filt_Gain 0x7014
  39. #define Loc_Ref 0x7016
  40. #define Limit_Spd 0x7017
  41. #define Limit_Cur 0x7018
  42. #define Gain_Angle 720/32767.0
  43. #define Bias_Angle 0x8000
  44. #define Gain_Speed 30/32767.0
  45. #define Bias_Speed 0x8000
  46. #define Gain_Torque 12/32767.0
  47. #define Bias_Torque 0x8000
  48. #define Temp_Gain   0.1

  49. #define Motor_Error 0x00
  50. #define Motor_OK 0X01
  51. enum CONTROL_MODE   //控制模式定義
  52. {
  53.     Motion_mode = 0,//運控模式  
  54.     Position_mode,  //位置模式
  55.     Speed_mode,     //速度模式  
  56.     Current_mode    //電流模式
  57. };
  58. enum ERROR_TAG      //錯誤回傳對照
  59. {
  60.     OK                 = 0,//無故障
  61.     BAT_LOW_ERR        = 1,//欠壓故障
  62.     OVER_CURRENT_ERR   = 2,//過流
  63.     OVER_TEMP_ERR      = 3,//過溫
  64.     MAGNETIC_ERR       = 4,//磁編碼故障
  65.     HALL_ERR_ERR       = 5,//HALL編碼故障
  66.     NO_CALIBRATION_ERR = 6//未標定
  67. };
  68. typedef struct{           //小米電機結(jié)構(gòu)體
  69.         uint8_t CAN_ID;       //CAN ID
  70.     uint8_t MCU_ID;       //MCU唯一標識符【后8位,共64位】
  71.         float Angle;          //回傳角度
  72.         float Speed;          //回傳速度
  73.         float Torque;         //回傳力矩
  74.         float Temp;                          //回傳溫度
  75.         
  76.         uint16_t set_current;
  77.         uint16_t set_speed;
  78.         uint16_t set_position;
  79.         
  80.         uint8_t error_code;
  81.         
  82.         float Angle_Bias;
  83.         
  84. }MI_Motor;
  85. extern MI_Motor mi_motor;//預先定義1個小米電機

  86. void xm_can_start();
  87. void motor_enable( uint8_t id=1 ) ;
  88. void motor_mode( uint8_t id ,char type );
  89. void motor_speed_value( uint8_t id ,float speed_ref );//-30rad-30rad
  90. void motor_yk( uint8_t id ,float torque, float MechPosition, float speed, float kp, float kd );
  91. void motor_pos_zero( uint8_t id=1 ); //位置置0
  92. void motor_pos_value( uint8_t id ,float speed_ref );
  93. void motor_pow_value( uint8_t id , float torque,float limit_cur ,float  kp,float kd );

  94. int filter(int queue[], char n) ; //數(shù)值過濾
  95. int check(byte ao_port, byte n); //獲取ad口電壓</font></font></font>
復制代碼

main.ino


  1. #include "xm_motor.h"
  2. String comdata = "";  //藍牙字符
  3. void setup() {
  4.   while (!Serial)
  5.     ;
  6.   Serial.begin(115200);

  7.   xm_can_start();                         //初始化can設置
  8.   motor_enable(1);                        //使能id 1電機
  9.   motor_pos_zero(1);                      //位置置0
  10.   motor_mode(1, 1);                       //電機運行模式 電機canid 模式值 1位置模式2速度模式 3 電流模式0運控模式
  11.   motor_pow_value(1, 30, 20, 0.2, 0.13);  //uint8_t id , float torque 位置模式速度限制 ,float limit_cur ,float  kp=0.8,float ki=0.13  id 速度 電流限制,kp,kd  速度 0~30rad/s 6.28rad 等于1圈  電流最大23A
  12.   Serial.println("Example: Write to CAN");
  13. }
  14. void loop() {

  15.   int speed_value = 100;
  16.   int speed_valueb = map(speed_value, 0, 1023, 0, 30);  //前進模擬量
  17.   float bb = (float)speed_value;
  18.   bb = bb / 163.9423;
  19.   if (bb > 6.2) { bb = 6.2; }
  20.   motor_pos_value(1, bb);          //電機位置模式賦值,id,位置角度rad 2派=360度。

  21.   delay(20);
  22. }
復制代碼

在main.ino中更改loop里speed_value的值即可更改角度,在0-1023范圍內(nèi)進行更改。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:444392 發(fā)表于 2024-4-26 22:55 | 只看該作者
之前我理解錯了,你說的雙絞線應該就是使用網(wǎng)線
回復

使用道具 舉報

板凳
ID:1119621 發(fā)表于 2024-5-7 15:32 | 只看該作者
CAN Config Soft V2.3.9可以發(fā)一下嗎?
回復

使用道具 舉報

地板
ID:380280 發(fā)表于 2024-10-2 23:51 | 只看該作者
#include "mcp2515.h"
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
亚洲欧美日韩国产另类专区| 国产又粗又长又爽又黄的视频| 91中文字幕在线| 欧美一级片在线播放| 高清一区二区三区四区五区| 欧美美女15p| 欧美成人激情视频免费观看| 日韩最新免费不卡| 色妞欧美日韩在线| 久久福利网址导航| 久久久久久久久久久久av| 欧美日本精品在线| 久久久久久久久爱| 日韩免费观看av| 国产精品久久一| 国产欧美日韩高清| 电影午夜精品一区二区三区| 久久精品成人一区二区三区蜜臀| 久久资源亚洲| 亚洲一区二区自拍偷拍| 九九久久九九久久| 欧美 日韩 国产在线观看| 黄色片视频在线免费观看| 亚洲乱码国产一区三区| 国产三级生活片| 日本一区二区在线免费观看| 中文字幕免费在线看线人动作大片| 国产又粗又猛又爽又黄的视频四季| 亚洲色图100p| 亚洲精品午夜国产va久久成人| 又骚又黄的视频| 你懂的网站在线| 欧美性受xxxx黑人爽| 网站免费满18成年在线观看| 18成人免费观看视频漫画| 在线免费视频福利| 看黄网站在线| 日韩成人动漫| caoporn成人免费视频在线| 久久av资源| 极品少妇一区二区三区| 麻豆91精品视频| 国产亚洲精品久| 精品色蜜蜜精品视频在线观看| 91精品蜜臀在线一区尤物| 亚洲欧美在线磁力| 1769国内精品视频在线播放| 99在线热播| 日本a级片在线观看| 手机看片一级片| 阿v天堂2014| 午夜精品一区二| 男女交配网站| qvod激情图片| 午夜伦理在线视频| 日日日日人人人夜夜夜2017| 最近久乱中文字幕| 国产女人在线观看| 中文字幕人成乱码在线观看| 婷婷综合国产| 午夜欧美精品| 国产乱码精品一区二区三区五月婷| 国产日韩影视精品| 日本韩国欧美国产| 国产亚洲成av人片在线观看桃| 欧美在线中文字幕| 青青草久久网络| 青青青在线视频免费观看| 女女互磨互喷水高潮les呻吟| 天天干天天干天天干天天| 亚洲免费网站在线观看| 91婷婷韩国| 日本在线观看高清完整版| 澳门久久精品| 日韩制服丝袜av| 亚洲视频在线一区二区| 日韩欧美一二三区| 97色在线观看免费视频| 欧美精品人人做人人爱视频| 福利在线一区二区三区| 国产探花在线免费观看| 嫩草影院一区二区| 中文字幕日产av一二三区| 国产精选在线| 日本高清不卡一区二区三区视频| 奇米狠狠一区二区三区| 久久精品国产99久久6| 亚洲黄一区二区三区| 亚洲精品大尺度| 国产一区二区香蕉| 男人揉女人奶房视频60分| 欧美aaa级片| 无码国产精品一区二区色情男同| 爽爽免费视频| 久久av影院| 亚洲制服少妇| 亚洲国产美女搞黄色| 伊人伊成久久人综合网小说| 国产亚洲自拍偷拍| 国模大尺度视频| 在线观看免费黄色小视频| 18毛片免费看| 三上悠亚一区二区| 日韩亚洲精品在线| 亚洲曰韩产成在线| 欧美老少配视频| 日本黄色播放器| 国产不卡在线观看视频| 男人天堂网页| 日本三级视频在线播放| 欧美久久综合网| 国产视频一区二区在线观看| 日韩国产激情在线| 久久久久国产精品视频| 欧美xxxxx精品| 亚洲国产精品久久人人爱潘金莲 | 男男一级淫片免费播放| 国产一区二区网站| 动漫成人在线观看| 97久久亚洲| 国产成人福利片| 精品免费视频一区二区| 亚洲直播在线一区| 9191在线视频| 欧美一区二区三区成人片在线| 亚洲成av人影片在线观看| 国产精品色呦| 久久久不卡网国产精品二区| 一区二区三区无码高清视频| 日韩国产高清一区| 黑人操日本美女| 九色视频网址| 国产精品3区| 国产黄色91视频| 日韩精品中文字| 亚洲乱码国产乱码精品天美传媒| 在线观看亚洲大片短视频| 免费国产阿v视频在线观看| heyzo高清在线| 久久久久久网| 欧美日韩国产精品自在自线| 91免费看片在线| 亚洲一区二区乱码| 国产一级免费黄色片| 超碰国产一区| 波多野结衣在线观看一区二区三区 | 一区二区三区不卡在线| 国产大片免费看| 四虎最新地址发布| 久久九九热re6这里有精品| 26uuu亚洲婷婷狠狠天堂| 中文字幕日韩av电影| 国产高清www| 午夜一级黄色片| 夜夜操免费视频| 免费视频观看成人| 91啪亚洲精品| 久久av在线看| 中文字幕国产传媒| 亚洲人妻一区二区| 天堂中文av在线资源库| 国产成人精品一区二| 在线精品国产欧美| 国产99久久九九精品无码| www.黄色av| 岛国av免费在线观看| 国内精品在线播放| 一夜七次郎国产精品亚洲| 青青草视频在线免费播放| 99热这里只有精品在线| 欧美午夜大胆人体| 国产一区视频在线看| 中文字幕日韩欧美精品在线观看| 欧美一区二区三区爽大粗免费| 亚洲va欧美va| 成人私拍视频| 久久一日本道色综合| 97超级碰碰碰| 国内精品久久99人妻无码| 干出白浆视频| 欧美肉体xxxx裸体137大胆| 日本韩国欧美三级| 欧美日韩亚洲在线| 久久精品视频2| 欧美性猛交xxx乱大交3蜜桃| 日韩av电影天堂| 中文字幕无线精品亚洲乱码一区| 久久久久国产精品熟女影院| 中文字幕久热| 91精品国产自产在线丝袜啪| 一区二区三区高清不卡| 成人片在线免费看| 日韩在线视频免费播放| 免费在线你懂的| 国产iv一区二区三区| 午夜精品久久久久久久久久久久久 | 日本少妇做爰全过程毛片| 日本一区视频| 麻豆成人综合网| 久久久精品在线观看| 免费看的av网站| jizz免费看| 综合日韩在线| 亚洲欧美在线第一页| 在线观看免费黄网站| www.91视频| 狂野欧美性猛交xxxx| 亚洲国产精品成人久久综合一区 | 亚洲国产无线乱码在线观看| 在线中文字幕视频观看| caoporen国产精品视频| 国产精品极品在线| 不卡的免费av| 超免费在线视频| 国产精品三级av| 精品日本一区二区三区在线观看| 国产美女www| 成人午夜毛片| 欧美视频在线免费| 国产乱人伦精品一区二区三区| 肉色超薄丝袜脚交一区二区| av成人男女| 欧美精品v国产精品v日韩精品| 久久福利一区二区| 久久精品视频在线观看榴莲视频| 精品国产91久久久久久浪潮蜜月| 欧美大胆人体bbbb| www激情五月| www污污在线| 国产一区二区三区av电影| 国产ts一区二区| 偷偷操不一样的久久| 国模冰冰炮一区二区| 一区二区三区精品视频在线| 亚洲综合第一| 国产专区自拍| 欧美激情自拍| 欧美成人手机在线| 99成人在线观看| 免费在线看污片| 亚洲伊人伊色伊影伊综合网| 樱空桃在线播放| 成人精品第一区二区三区| 国产主播精品| 欧美黑人又粗大| 久久网中文字幕| www.日韩| 欧美午夜不卡在线观看免费| 日韩av片网站| 天堂电影在线| 91丨porny丨国产入口| 另类欧美小说| 另类free性欧美护士| 亚洲高清成人| 国产mv久久久| 国产男女裸体做爰爽爽| 欧美调教网站| 中文字幕亚洲无线码a| 任我爽在线视频| 在线免费av资源| 欧美午夜精品久久久久久孕妇 | 一个人看的www视频在线免费观看| 亚洲综合免费观看高清完整版在线 | 国产一区不卡在线| 超碰97国产在线| 美女扒开尿口让男人操| 影音先锋日韩精品| 91av视频在线免费观看| 中文字幕第三页| 九九久久精品| 欧美刺激性大交免费视频| 国产福利拍拍拍| 99精品国产一区二区三区2021| 亚洲精品久久久久久下一站| 精品人妻一区二区三区四区| 在线手机中文字幕| 日韩一区二区免费电影| 亚洲 小说 欧美 激情 另类| 成人免费网站观看| 91精品国产综合久久精品| 99精品一区二区三区无码吞精| 欧美18hd| 色婷婷狠狠综合| 亚洲国产精品狼友在线观看| 91在线中文| 欧美三级在线播放| 中文字幕乱码在线| 9999精品成人免费毛片在线看| 日本高清免费不卡视频| 成人做爰69片免费| 欧美韩日亚洲| 制服视频三区第一页精品| 国产在线观看h| 黑人一区二区三区| 亚洲人成自拍网站| 毛片在线免费视频| 国产成人调教视频在线观看| 亚洲91精品在线| 亚洲欧美激情另类| 亚洲一区二区三区四区五区午夜| 91久久精品www人人做人人爽| 欧美一级手机免费观看片| 蜜臀av性久久久久蜜臀aⅴ| 免费在线成人av电影| xfplay先锋影音夜色资源站| 久久久精品日韩欧美| 黄在线观看网站| jizz在线观看中文| 在线观看视频欧美| 国产伦精品一区二区三区视频女| 色综合视频一区二区三区44| 精品国产美女在线| 国产免费av电影| 性欧美videos另类喷潮| 欧美激情一区二区三区在线视频| wwwxx在线观看| 中文字幕在线观看一区| 中文 日韩 欧美| 综合日韩av| xxav国产精品美女主播| 国产精品视频一二区| 亚洲一区二区毛片| 一区二区三区在线视频看| 在线国产网址| 91久久线看在观草草青青| 国产欧美一区二区三区在线观看视频| 国产人与zoxxxx另类91| 欧美第一淫aaasss性| 亚洲欧洲国产综合| 国产 欧美在线| 狠狠操精品视频| 182在线播放| 在线精品国产成人综合| 国产综合在线播放| 国产伦精品一区二区三区在线观看| 国产一区二区三区小说| 在线观看免费黄色| 精品国产乱码久久久久久老虎 | 日韩伦理三区| 欧美精品免费播放| 亚洲欧美天堂网| 久久久久亚洲蜜桃| 欧美一级片在线免费观看| 996久久国产精品线观看| 9.1国产丝袜在线观看| 国产精彩自拍| ㊣最新国产の精品bt伙计久久| 亚洲久久久久久| 欧美变态挠脚心| 91欧美激情另类亚洲| 三上悠亚在线资源| 日本韩国一区二区三区| 亚洲天堂日韩av| 久久国产精品久久w女人spa| 欧美日韩dvd| 爱情岛论坛亚洲品质自拍视频网站| 在线成人中文字幕| 中文av字幕| 国产精品久久久久7777按摩| 成人性生交大免费看| 色综合久久网| 少妇精品久久久久久久久久| 2017亚洲天堂1024| 中文字幕精品一区二区精品| 中文天堂最新版本在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品jizz| 国产精品88久久久久久| 西游记1978| 免费影视亚洲| 久久噜噜噜精品国产亚洲综合| 香蕉视频在线观看www| 激情懂色av一区av二区av| 国产无遮挡免费视频| 日韩精品视频网| 在线观看的毛片| 99re8这里有精品热视频8在线| 国产精品yjizz| 国产资源在线播放| 国产亚洲精品美女久久久| 麻豆国产在线视频| 午夜精品视频一区| 日日摸天天添天天添破| 精品一区二区三区日韩| 中文字幕剧情在线观看| 亚洲国产欧美日韩在线观看第一区| 精品视频导航| 羞羞电影在线观看www| 亚洲91精品在线| 色老板在线观看| 日韩精品久久久久| 久热精品免费视频| 欧美性极品xxxx做受| 亚洲一级视频在线观看| 99精品视频在线观看| 亚洲一二三精品| 三级成人在线视频| 国产xxx在线观看| 中文字幕免费一区二区三区| 人妻少妇精品无码专区二区|