色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于鉆井深度顯示器和帶有Arduino支持的7段顯示器設計

電子設計 ? 來源:電路城 ? 作者:電路城 ? 2021-05-20 17:14 ? 次閱讀

在這個Arduino項目中,通過陀螺傳感器的鉆井深度顯示器和帶有Arduino支持的7段顯示器,來讀取所需位置的深度。

概念:

指定鉆孔深度時,用鉆頭刮擦表面,記下坐標,然后添加所需的鉆孔深度,最后進行鉆孔,直到達到該深度為止。為了防止鉆孔過深,當到達孔深度時,會收到消息。

按鈕功能:當按下它時,Arduino會將當前鉆孔位置保存為停止值,并在以后到達時隨時提醒。

鉆頭的軸具有SW17六角螺母。因此,只需一個3D打印的組件即可安轉傳感器,并可以將其插入六角螺母上。

所需組件:

Arduino Nano

陀螺傳感器GY-521

7位模塊,帶8位數字(SPI版本,帶有MAX7219 IC

按鍵

開/關

電源:AA或AAA電池的電池夾或移動電源

3D打印外殼

釹磁鐵

原理圖:

連接:

1、陀螺儀傳感器通過I2C連接。因此,對于Nano,必須使用A5和A4。

VCC-》 5V

地線-》地線

SCL-》 A5

SDA-》 A4

XDA-》未連接

XCL-》未連接

ADO-》未連接

INT-》未連接

2、7段模塊:

連接7段模塊時,可以使用任何數字引腳。使用Arduino草圖設置引腳。

VCC-》 3.3V

地線-》地線

DIN-》 D12

CS-》 D10

時鐘-》 D11

3、按鈕:

可以自由選擇按鈕的輸入引腳。該項目使用D9針。

4、電源供應:

對于電源,使用6節AA電池。在打開/關閉開關后,它們為整個系統供電

5、套管:

使用Autodesk Fusion 360設計了機殼、使用Anycubic i3 Mega創建了3D打印。

代碼:

/ *程序:rilling-depth.ino

*作者:托馬斯·安吉爾斯基

*版本:2021 -03-20

*

* https://techpluscode.de/

* https://techpluscode.de/bohrtiefenanzeige-mit-gyro-sensor/

*

*此草圖測量臺式鉆孔的鉆孔深度

*使用GY-521陀螺儀傳感器數據

*通過7段顯示

查看深度

*

*來自electronicoobs.com的calc誤差補償的想法-謝謝!

*

* /

#include 《Wire.h》

#include 《math.h》

#include “LedControl.h”

#define MPU 0x68

char txt[8];

String s;

float currentPos,stopPos;

float rad_to_deg;

float AccX, AccY, AccZ;

float AccAngleX, AccAngleY;

float AccAngleErrorX, AccAngleErrorY;

float TotalAngleX, TotalAngleY;

float DrillingMachineAngle, delta;

//初始化LED :引腳D12,引腳D11,引腳D10、1個模塊

LedControl lc=LedControl(12,11,10,1);

void setup() {

//準備串行連接

//Serial.begin(9600);

//開始值

stopPos=0.0;

currentPos=0.0;

rad_to_deg = 180/PI;

//準備GY-521傳感器

//我們僅使用加速器數據

Wire.begin();

Wire.beginTransmission(MPU);

Wire.write(0x6B);

Wire.write(0x00); // wake up MPU

Wire.endTransmission(true);

//delay(1000)

Wire.beginTransmission(MPU);

Wire.write(0x1C); //注冊 ACCEL_CONFIG

Wire.write(0x10); //設置00010000 來實習 +/- 8g 滿量程范圍

Wire.endTransmission(true);

//計算加速器數據錯誤

//進行100次測量

for(int a=0; a《100; a++) {

Wire.beginTransmission(MPU);

Wire.write(0x3B);

Wire.endTransmission(false);

Wire.requestFrom(MPU,6,true);

AccX=(Wire.read()《《8|Wire.read())/4096.0 ;

AccY=(Wire.read()《《8|Wire.read())/4096.0 ;

AccZ=(Wire.read()《《8|Wire.read())/4096.0 ;

AccAngleErrorX=AccAngleErrorX+((atan((AccY)/sqrt(pow((AccX),2)+pow((AccZ),2)))*rad_to_deg));

//AccAngleErrorY=AccAngleErrorY+((atan(-1*(AccX)/sqrt(pow((AccY),2)+pow((AccZ),2)))*rad_to_deg));

}

AccAngleErrorX=AccAngleErrorX/100;

//AccAngleErrorY=AccAngleErrorY/100;

//準備按鈕:D9針

pinMode(9,INPUT_PULLUP);

//準備7段顯示

lc.shutdown(0,false);

lc.setIntensity(0,8);

lc.clearDisplay(0);

}

void loop() {

Wire.beginTransmission(MPU);

Wire.write(0x3B);

Wire.endTransmission(false);

Wire.requestFrom(MPU,6,true);

AccX=(Wire.read()《《8|Wire.read())/4096.0;

AccY=(Wire.read()《《8|Wire.read())/4096.0;

AccZ=(Wire.read()《《8|Wire.read())/4096.0;

AccAngleX=(atan((AccY)/sqrt(pow((AccX),2)+pow((AccZ),2)))*rad_to_deg)-AccAngleErrorX;

//AccAngleY=(atan(-1*(AccX)/sqrt(pow((AccY),2)+pow((AccZ),2)))*rad_to_deg)-AccAngleErrorY;

//平均值

TotalAngleX=0.5*(TotalAngleX)+0.5*AccAngleX;

//TotalAngleY=0.5*(TotalAngleY)+0.5*AccAngleY;

//使用X,Y,Z的+/-將x角度計算為360,增量= 0;

if ((AccZ《0)) {

delta=180.0-TotalAngleX*2.0;

}

if ((AccZ》0)&&(AccY《0)) {

delta=360.0;

}

DrillingMachineAngle=TotalAngleX+delta;

//如果接近360,則顯示效果更好0

if (DrillingMachineAngle》350) {DrillingMachineAngle=0;}

//計算鉆孔深度

//最大鉆孔深度:50 mm(在機器上測量)

//手輪最大角度:316(使用Serial.print數據測量)

currentPos=50.0/316.0*DrillingMachineAngle;

/*

Serial.print(“X / X / Y / Z / E : BOHRTIEFE”);

Serial.print(TotalAngleX);

Serial.print(“ ”);

Serial.print(AccX);

Serial.print(“ ”);

Serial.print(AccY);

Serial.print(“ ”);

Serial.print(AccZ);

Serial.print(“ 》》 ”);

Serial.print(DrillingMachineAngle);

Serial.print(“ 》》 ”);

Serial.print(currentPos);

Serial.println(“ ”);

*/

//按下按鈕?

if (digitalRead(9)==LOW) {

//儲存停止位置

stopPos=currentPos;

lc.setChar(0,3,‘8’,false);

lc.setChar(0,2,‘8’,false);

lc.setChar(0,1,‘8’,false);

lc.setChar(0,0,‘8’,false);

//Serial.println(“按下按鈕”);

delay(1000);

}

if (stopPos》0) {

//到達停止位置?

if (currentPos》=stopPos) {

//是:在右側顯示STOP

lc.setChar(0,3,‘5’,false);

lc.setRow(0,2,B00001111);

lc.setChar(0,1,‘0’,false);

lc.setChar(0,0,‘P’,false);

} else {

//否:顯示到停止位置的距離

dtostrf(stopPos-currentPos,4,1,txt);

s=‘ ’+String(txt);

lc.setChar(0,0,s.charAt(s.length()-1),false);

lc.setChar(0,1,s.charAt(s.length()-3),true);

lc.setChar(0,2,s.charAt(s.length()-4),false);

lc.setChar(0,3,s.charAt(s.length()-5),false);

}

} else {

//不顯示任何內容

lc.setChar(0,3,‘ ’,false);

lc.setChar(0,2,‘ ’,false);

lc.setChar(0,1,‘ ’,false);

lc.setChar(0,0,‘ ’,false);

}

//在左側顯示當前鉆孔深度

//格式化為字符串

dtostrf(currentPos,4,1,txt);

s=‘ ’+String(txt);

lc.setChar(0,4,s.charAt(s.length()-1),false);

lc.setChar(0,5,s.charAt(s.length()-3),true);

lc.setChar(0,6,s.charAt(s.length()-4),false);

lc.setChar(0,7,s.charAt(s.length()-5),false);

delay(200);

}

代碼講解:

1、使用LedControl.h庫來控制7段顯示。如未安裝,則必須使用庫管理器進行安裝。

2、陀螺傳感器通過I2C總線連接。通過Wire.h進行通信

3、使用Led Control控制7段顯示。

4、引腳進行初始化后,設置過程僅需要進行一些準備工作即可喚醒顯示并調整強度。

5、在循環部分中,顯示屏僅顯示當前鉆孔深度,如果已設置,則顯示停止位置,顯示為數字。

6、函數dtostrf將浮點數轉換為字符數組。然后輸入一個字符串,以在顯示屏上按字符顯示它。

基于鉆井深度顯示器和帶有Arduino支持的7段顯示器設計

當到達停止位置時,“ StOP”出現在顯示屏上。可以使用setRow過程和適當的位模式B00001111生成小的“ t” 。

8、通過線庫的功能讀取陀螺傳感器的功能。使用加速度計來確定角度位置。

9、當USB連接到Arduino IDE時,一切運行正常。拔下插頭并連接到外部電源后,傳感器未提供任何數據。它僅在Arduino復位后才能再次工作。經過長時間的搜索,解決方案是在喚醒傳感器后安裝等待時間。這使延遲(1000)在整個源代碼中成為最重要的命令。

基于鉆井深度顯示器和帶有Arduino支持的7段顯示器設計

必須在開始時為傳感器確定偏移值,否則值會波動。在設置部分中,測量100個值并將偏差平均。

X角度(度)使用以下公式計算:

AccAngleX = (atan ((AccY) / sqrt (pow ((AccX), 2) + pow ((AccZ), 2))) * rad_to_deg);

加速度傳感器的值波動很大。因此,將當前計算的值與先前的值分別取50%的平均值。

TotalAngleX = 0.5 * TotalAngleX + 0.5 * AccAngleX;

傳感器從-90°到+ 90°輸出角度值。但是需要從0°到360°的角度才能轉換成鉆孔深度。

但是,對于該程序,查看傳感器數據Z和Y是正還是負就足夠了。并相應地轉換角度。

基于鉆井深度顯示器和帶有Arduino支持的7段顯示器設計

通過Serial.print輸出確定角度,并記下旋轉角度的最大值。

當旋轉角度為316°, 最大鉆孔深度為50mm時,當前位置的計算方式:

currentPos=50.0/316.0*DrillingMachineAngle;

如果按下該按鈕,則Arduino將保存當前的鉆孔位置。顯示屏上顯示8888,短等待1秒。

如果設置了停止位置,則在右側顯示屏上會顯示直到停止為止的剩余鉆削深度。

組裝:

陀螺儀傳感器最好用熱膠點固定。將連接電纜穿過蓋子。這部分就是這樣。

在第一個測試中,陀螺儀傳感器必須首先對準。我是水平安裝的。由于支架設計為可旋轉的,因此可以輕松進行調整,直到顯示屏上顯示0.0。

測試:

傳感器反應非常迅速,計算出的值與鉆孔深度完全匹配。而且由于采用了大型LED顯示屏,可讀取準確的鉆削深度。
責任編輯:pj

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51192

    瀏覽量

    754405
  • 顯示器
    +關注

    關注

    21

    文章

    4983

    瀏覽量

    140100
  • Arduino
    +關注

    關注

    188

    文章

    6471

    瀏覽量

    187292
收藏 人收藏

    評論

    相關推薦

    用ARM7-LPC2148連接7顯示器的教程

    今天在本教程中,我們將用ARM7-LPC2148連接7顯示器。在詳細介紹之前,我們將了解如何控制7
    的頭像 發表于 10-28 15:34 ?3002次閱讀
    用ARM<b class='flag-5'>7</b>-LPC2148連接<b class='flag-5'>7</b><b class='flag-5'>段</b><b class='flag-5'>顯示器</b>的教程

    如何使用CD4511驅動7顯示器

    在本教程中,我們將使用 IC 4511 驅動 7 顯示器。該CD4511 IC基本上是一個BCD轉7解碼
    的頭像 發表于 01-02 10:15 ?1w次閱讀
    如何使用CD4511驅動<b class='flag-5'>7</b><b class='flag-5'>段</b><b class='flag-5'>顯示器</b>

    如何使用8051單片機在7顯示器顯示數字?

    在使用單片機開發項目的時候,經常會使用到7顯示器7顯示器可以
    的頭像 發表于 07-07 11:34 ?3121次閱讀
    如何使用8051單片機在<b class='flag-5'>7</b><b class='flag-5'>段</b><b class='flag-5'>顯示器</b>上<b class='flag-5'>顯示</b>數字?

    使用MAX6954驅動7LED顯示器

    使用MAX6954驅動7LED顯示器:本文旨在幫助工程師快速掌握 MAX6954 驅動7 單色LED 驅動
    發表于 10-02 13:46 ?46次下載

    使用MAX6954驅動7LED顯示器

    摘要:本文旨在幫助工程師快速掌握MAX6954驅動7單色LED驅動的使用方法。 MAX6954是一個通用顯示驅動,能夠通過一個串口控制
    發表于 05-03 14:32 ?1145次閱讀
    使用MAX6954驅動<b class='flag-5'>7</b><b class='flag-5'>段</b>LED<b class='flag-5'>顯示器</b>

    7LED顯示器的驅動電路圖

    7LED顯示器的驅動電路圖
    發表于 07-18 11:33 ?1418次閱讀
    <b class='flag-5'>7</b><b class='flag-5'>段</b>LED<b class='flag-5'>顯示器</b>的驅動電路圖

    如何結合4英寸7顯示器和ESP8266 Wifi模塊來創建8位顯示器

    您做到了。您剛剛構建了自己的7互聯網顯示器
    的頭像 發表于 11-01 15:31 ?3810次閱讀

    帶有Arduino Pro Mini的LED矩陣顯示器

    電子發燒友網站提供《帶有Arduino Pro Mini的LED矩陣顯示器.zip》資料免費下載
    發表于 07-12 09:53 ?5次下載
    <b class='flag-5'>帶有</b><b class='flag-5'>Arduino</b> Pro Mini的LED矩陣<b class='flag-5'>顯示器</b>

    基于Arduino的機械彩色Nipkow顯示器

    電子發燒友網站提供《基于Arduino的機械彩色Nipkow顯示器.zip》資料免費下載
    發表于 10-18 09:39 ?0次下載
    基于<b class='flag-5'>Arduino</b>的機械彩色Nipkow<b class='flag-5'>顯示器</b>

    Arduino電腦顯示器開源分享

    電子發燒友網站提供《Arduino電腦顯示器開源分享.zip》資料免費下載
    發表于 10-26 15:42 ?0次下載
    <b class='flag-5'>Arduino</b>電腦<b class='flag-5'>顯示器</b>開源分享

    創建一個7顯示器

    電子發燒友網站提供《創建一個7顯示器.zip》資料免費下載
    發表于 10-26 10:51 ?0次下載
    創建一個<b class='flag-5'>7</b><b class='flag-5'>段</b><b class='flag-5'>顯示器</b>

    使用Arduino測試7顯示器

    電子發燒友網站提供《使用Arduino測試7顯示器.zip》資料免費下載
    發表于 11-15 10:56 ?0次下載
    使用<b class='flag-5'>Arduino</b>測試<b class='flag-5'>7</b><b class='flag-5'>段</b><b class='flag-5'>顯示器</b>

    基于Arduino UNO的4位7顯示器的溫度監控

    本方案是一個基于 Arduino UNO 的4 位 7 顯示器的溫度監控。該項目旨在顯示用于
    發表于 12-22 14:30 ?0次下載

    使用3x7LED顯示器的反應計時

    方案介紹統計您需要花費多長時間來響應執行信號。使用由3個4026B十進制計數驅動的3x7LED顯示器。硬件部件Arduino UNO??
    發表于 12-30 14:46 ?0次下載

    使用7顯示器的交通燈

    電子發燒友網站提供《使用7顯示器的交通燈.zip》資料免費下載
    發表于 06-25 14:40 ?0次下載
    使用<b class='flag-5'>7</b><b class='flag-5'>段</b><b class='flag-5'>顯示器</b>的交通燈
    主站蜘蛛池模板: 老师扒开尿口男生摸尿口| 黄色片软件大全| 俄罗斯爱爱| 国产乱对白精彩在线播放| 大陆女人内谢69XXXORG| 国产免费人成在线视频视频| 精品亚洲一区二区在线播放| 精品国产在线国语视频| 免费看黄软件| 午夜黄视频| 亚洲黄色官网| 99久久国产露脸精品国产麻豆| 国产AV无码熟妇人妻麻豆| 久久er99热精品一区二区| 韩国成人理伦片免费播放| 麻豆文化传媒一区二区| 手机在线成人精品视频网| 午夜精品久久久久久久爽牛战| 中国人泡妞www免费| 中文字幕不卡在线高清| 高h原耽肉汁动漫视频| 久久高清一本无码| 色欲国产麻豆一精品一AV一免费| 伊人AV一区二区三区夜色撩人| 成人亚洲视频| 老人FREE VIODES老少配| 玩高中女同桌肉色短丝袜脚文 | 欧洲最强rapper潮水喷视频 | 色女孩综合| 小蝌蚪视频在线观看免费观看WWW 小货SAO边洗澡边CAO你动漫 | 果冻传媒APP免费网站在线观看| 久草网国产自偷拍| 日韩无码在线| 在线观看中文字幕码2021不用下载 | 亚洲中文字幕国产综合| 粉嫩AV国产一区二区福利姬| 老师的玉足高跟鞋满足我| 小莹的性荡生活45章| qvod伦理片| 两性午夜色视频免费网站| 亚洲精品国产精品麻豆99|