熱門文章

2017年8月31日 星期四

肌膚彈性(組裝)

皮膚彈性儀 組裝




零件:
  1. XGZP6847 真空傳感器 
  2. L-293D 電機驅動擴展板 https://www.eclife.com.tw/led/moreinfo_83732.htm
  3. 真空泵 -12V http://goods.ruten.com.tw/item/show?21407137501135
Code 有兩個
  1. BasicTest:找出電壓與真空關係
  2. SkinElasticity: 速度設定約 75%-95%
作動原裡:
  1. 開機真空泵以設定速度運轉,到達Max真空值。(Max值設定約 50-70mpa)
  2. 真空泵停止,顯示真空值。
目前先做到這裡 待有空或有緣人來幫忙。。。

--- 程式碼 Code 1 BasicTest ---
/*
 * 設計:potPin控制 relayPin 調整真空泵速度   
 *      vacuumPin偵測真空度 到達目標值既關閉真空泵
 *      
 */
//int relayPin= 3 ;
//int potPin = A0;  // analog pin used to connect the potentiometer
int vacuumPin= A0 ;
int vaccumValue = 0 ;
//int potValue = 0 ;
int a = 0 ;
void setup() {
  //pinMode(relayPin, OUTPUT);  
 // potValue = analogRead( potPin) ;
 // analogWrite(relayPin,potValue);
  Serial.begin(9600);
  Serial.println("LABEL,NO,VACCUM");
}

void loop() {  
  vaccumValue = analogRead( vacuumPin) ;
 /*if ( vaccumValue >= 80  ) {
            analogWrite(relayPin, 0);
  }  
   if (vaccumValue <= 0 ) {
             analogWrite(relayPin, potValue);
   } 
 */
 a = a + 1 ;
     Serial.print("DATA");
     Serial.print(",");     
     Serial.print(a);
     Serial.print(",");     
     Serial.println(vaccumValue);     
     delay(100) ;
}
--- 程式碼 Code 2 SkinElasticity ----
/* 
 *  由elasticity-tryVaccumSensor-8 修改名
 *  真空senser 
 * 真空泵     压力范围:-460mmHg~1200mmhg
 * 先測出真空泵壓力(真空)值 如下
 * 4.5v,0.5v  ; 0kpa,-100kpa
*  914/1023*5v = 4.46v, 482/1023*5v = 2.35v  sersorVlue
*              = 0kpa               = 70.5kpa*              
* 最大真空:>-65kpa
* 充气时间:<10S(500cc  tank  0  to  300mmHg)
* -------------------------------------------
 *  改真空泵控速 L293D 驅動器
   http://ee543.blogspot.tw/2016/04/arduino-uno452l293d.html
  *------------------------------------------ 
  * 原 Elasticity-tryVaccumSensor-4 可設定真空泵速度
  * 增加最大 真空泵壓力值可設定
  * -----------------------------------------------------
  * potSpValue   值由 從0~1023映射到 0~100                                       
  * potMaxValue  值由  從0~1023映射到 0~70.5
  * potMaxValue設定 kpaValue2 >= potMaxValue2 ,kpaValue2 <= 0 真空泵才工作
  * -------------------------------------------------------
  * 增加真空值 V 第一行^^^啟動speed設成95較好,若需要再降
  * maxValue 45
  * ---------------------------------------------------------------------------------
  * Serial.println("LABEL,TIME,Vaccum");修改成 Serial.println("LABEL,NO.,Vaccum");
*/  

#include <liquidcrystal_i2c.h>
LiquidCrystal_I2C lcd(0x3F,20,4);
#define kpaPin A0  // 讀 真空泵 壓力(真空)值
#define potSpPin A1 // 讀 potPin A1 值 供 ENAPin  輸出 pwm 速度
#define potMaxPin A2 // 讀 potPin A2 值 設定最大 真空泵 壓力(真空)值
#include <afmotor.h>
AF_DCMotor motor(2, MOTOR12_8KHZ); //接L293D 驅動器腳座 1 及頻率
int potSpValue = 0 ;
int potMaxValue = 0 ;
int kpaValue = 0 ;
int kpaValue2 = 0 ;
int a = 0 ;
void setup()
{
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("ToppyBio.Com.  Hi");
  delay (1200);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Spd: ");
  lcd.setCursor(8, 0);
  lcd.print("V: ");
  lcd.setCursor(0, 1);
  lcd.print("MaxP Value:");

  //motor.setSpeed(65);     //可調轉速約 0-100
 // motor.run(FORWARD);
 
  Serial.begin(9600);  
  Serial.println("LABEL,NO.,Vaccum");
}

void loop()
{  
  lcd.setCursor(4, 0);//必須有這4行,調整 LCD 數字亂碼
  lcd.print("   ");
  lcd.setCursor(11, 1);
  lcd.print("    ");
  lcd.setCursor(11, 1);
  lcd.print("      ");
  int potSpValue = analogRead(potSpPin);    
  int potSpValue2 = map(potSpValue, 0, 1023, 0, 100); // 從0~1023映射到 0~100  
  int potMaxValue = analogRead(potMaxPin);
  int potMaxValue2 = map(potMaxValue, 0, 1023, 0, 70.5); // 從0~1023映射到 0~70.5
  // motor.setSpeed(potSpValue2);     //可調轉速約 0-100
  //motor.run(FORWARD);      //正轉
  int kpaValue = analogRead(kpaPin); // 讀取FSR
  int kpaValue2 = map(kpaValue, 914, 482, 0, 70.5);
  //int led_value = map(fsr_value, 0, 1023, 100, 0); // 從0~1023映射到0~255
    
     if (kpaValue2 >= potMaxValue2 ) {
        motor.setSpeed(potSpValue);     //可調轉速約 0~到 100
        motor.run(RELEASE);      //停止
       }
     if (kpaValue2 <= 0 ) {
       motor.setSpeed(potSpValue);    //可調轉速約 0~到 100
       motor.run(FORWARD);      //正轉
      } 
      a = a+1 ;
      lcd.setCursor(4, 0);
      lcd.print(potSpValue2);
      lcd.setCursor(11, 0);
      lcd.print(kpaValue2);
      lcd.setCursor(11, 1);
      lcd.print(potMaxValue2);   
     Serial.print("DATA");
     Serial.print(",");     
     Serial.print(a);
     Serial.print(",");     
     Serial.println(kpaValue2);
  //Serial.println(led_value);
  
  delay(100);
}


1 則留言:

  1. 對此儀器很感興趣
    多謝發明者的開發
    是否有承接外銷歐洲訂單

    回覆刪除