資料介紹
描述
介紹
也許這發(fā)生在你身上,但在過(guò)去的幾年里,當(dāng)我離開(kāi)家去度假或忘記給它們澆水時(shí),我殺死了很多植物。因此,我考慮將任務(wù)自動(dòng)化以挽救未來(lái)的植物生命。本文描述了生成的項(xiàng)目。
我將 Arduino Uno 與 Infineon 的TLE94112 多半橋一起使用,為我的家庭植物創(chuàng)建了一個(gè)自動(dòng)水泵。
有關(guān)這些部分的介紹以及如何熟悉相應(yīng)的庫(kù),請(qǐng)參閱這篇 hackster 文章。我還假設(shè)您對(duì) Arduino 和 C++ 編程有一些基本知識(shí)。
硬件
Arduino 和 TLE94112 像任何其他 Arduino 盾牌一樣組合在一起。
棘手的部分是泵與TLE94112的連接,因?yàn)槲覀冃枰獛讉€(gè)半橋來(lái)為泵提供足夠的電流。就我而言,總共有 8 個(gè),4 個(gè)高側(cè)和 4 個(gè)低側(cè)半橋,為泵提供高達(dá) 3.6A 的電流。問(wèn)題是,這是我的泵產(chǎn)品頁(yè)面中列出的電流的兩倍多,因?yàn)榇蠖鄶?shù)制造商只包括他們產(chǎn)品的平均電流負(fù)載,但對(duì)我們來(lái)說(shuō),開(kāi)關(guān)期間的峰值電流是有限的,因?yàn)?/font>TLE94112如果超過(guò)每半橋 0.9A 的限制,將進(jìn)入緊急關(guān)斷狀態(tài)。
這就是為什么我從三個(gè)螺絲端子中焊接了一個(gè)從 2 x 4 到 2 根電線的適配器:
泵上的連接取決于您選擇的泵。就我而言,它帶有預(yù)連接的電線。
關(guān)于直流泵的另一個(gè)注意事項(xiàng):在我的例子中,泵中的電機(jī)以相同的方向旋轉(zhuǎn),而不管連接的極性如何。對(duì)于這個(gè)項(xiàng)目,這不是問(wèn)題,但如果您想適應(yīng)其他應(yīng)用程序,請(qǐng)記住這一點(diǎn)。
最后,將軟管連接到泵上,并將一端放在水箱(例如噴壺)中,另一端放在植物的花盆中:
現(xiàn)在,我使用我的實(shí)驗(yàn)室工作臺(tái)電源作為整個(gè)設(shè)置的電源。根據(jù)您的泵選擇合適的來(lái)源(可以是電池供電的)。請(qǐng)記住,TLE94112 將您的電源連接到泵。
軟件
由于我使這個(gè)項(xiàng)目相當(dāng)可擴(kuò)展,因此代碼被分成了幾個(gè)文件,但別擔(dān)心,它非常簡(jiǎn)單,我們將詳細(xì)介紹所有細(xì)節(jié)。
該項(xiàng)目可以在任何與 arduino 兼容的 IDE 中設(shè)置,我們將使用默認(rèn)的Arduino IDE ,但例如 Platformio 也可以。
前兩個(gè)文件,helpers.cpp
僅helpers.hpp
包含一些包裝器,用于啟用和關(guān)閉可切換到串行終端的日志記錄。
使用此處提供的功能,您可以簡(jiǎn)單地使用
logger.log("hello world");
代替
Serial.print("hello world");
該類(lèi)Logger
包裝 Serial.print
等,并且僅logger.logging
在設(shè)置為時(shí)打印/記錄true
。需要?jiǎng)?chuàng)建該類(lèi)的一個(gè)實(shí)例,然后您可以像通常的Serial
類(lèi)一樣使用它:
Logger logger(500, true); //logger wraps Serial.print in order to disable logging with one variable, here it is enabled.
logger.logln("Init ready");
第一個(gè)變量設(shè)置應(yīng)將 TLE94112的錯(cuò)誤消息提取并記錄到串行終端的時(shí)間段(以毫秒為單位)(請(qǐng)參閱本文,第 5 節(jié)以了解有關(guān)板的錯(cuò)誤消息的說(shuō)明)。第二個(gè)完全啟用/禁用日志記錄。
第二組文件是包含植物類(lèi)的基本功能定義的文件plant.cpp
,plant.hpp
以支持通過(guò)同一設(shè)置澆灌多個(gè)植物。
class Plant {
private:
/* data */
uint32_t pump_duration; //pump powered time in millis
uint8_t pump_interval_days; //nr of days between pumping
Tle94112Motor *pump_motor;
public:
void pump(); //function to pump water for pump_time length
Plant(Tle94112Motor* pump_motor_p, uint32_t pump_duration_p, uint8_t pump_interval_days_p); //constructor
void setPump_duration(uint32_t t_milli);
uint32_t getPump_duration();
void setPump_interval_days(uint8_t interval);
uint8_t getPump_interval_days();
};
標(biāo)題是不言自明的。
每株植物都有一個(gè)泵(Tle94112Motor *pump_motor;
),應(yīng)該uint32_t pump_duration;
每隔幾天激活一次()一段時(shí)間( uint8_t pump_interval_days;
)
這些函數(shù)是這兩個(gè)變量的 getter 和 setter,以及激活泵送的函數(shù)。
我要特別注意void pump();
.cpp文件中函數(shù)的函數(shù)定義:
void Plant::pump(){
pump_motor->rampSpeed(255, pump_duration);
delay(pump_duration);
pump_motor->coast();//coast the motor to save power (as opposed to forced holding)
}
如您所見(jiàn),泵電機(jī)并未立即完全啟動(dòng),但泵送速度在泵持續(xù)時(shí)間內(nèi)上升至全速。這種“軟開(kāi)關(guān)”是必要的,因?yàn)橥瑫r(shí)打開(kāi)電機(jī)會(huì)消耗比TLE94112能夠處理的更多的電流。這通常也超過(guò)了電機(jī)/泵的電流消耗標(biāo)簽。
現(xiàn)在我們已經(jīng)來(lái)到了plant_watering.ino
文件,代碼的核心。
前幾行只是庫(kù)包含和串行波特率的定義。
#include
#include
#include
#include
#include "plant.hpp"
#include "helpers.hpp" //Logger
#define BAUD 115200
接下來(lái)是為 TLE94112、記錄器和工廠創(chuàng)建所有類(lèi)對(duì)象。在此示例中,我只使用一種植物,但您可以以相同的方式添加其他植物:
// Tle94112 Object on Shield 1
Tle94112Ino controller = Tle94112Ino();
// Tle94112Motor Objects on controller
Tle94112Motor motor_0(controller);
Logger logger(500, true); //logger wraps Serial.print in order to disable logging with one variable, here it is enabled.
Plant p1(&motor_0, 2000, 1); //attach the motor, the watering time and the days between watering
const uint8_t plant_nr = 1;
Plant* plants[plant_nr] = { //array of all plants, for iteration purposes
&p1
};
所有植物都必須保存到一個(gè)plants
size 的數(shù)組中plant_nr
。
接下來(lái)是一些有助于安排澆水任務(wù)的變量。這被排除在工廠類(lèi)之外,以便輕松切換到不同的計(jì)時(shí)方案,例如實(shí)時(shí)時(shí)鐘。但是,在這種情況下,我們將使用該millis();
函數(shù)。
//Timing:
uint32_t millis_in_day = (uint32_t)1000*60*60*24; //calculate the milliseconds in a day, for timekeeping
// uint32_t millis_in_day = (uint32_t)1000*5; //this is the testing version to see immediate results
uint32_t last_pumped[plant_nr] = {0}; //this is not a plant::variable since timing method is independent of plant class
出于測(cè)試目的,您可以通過(guò)減少一天中的毫秒數(shù)來(lái)模擬更快的時(shí)間流逝。
該setup()
函數(shù)初始化之前創(chuàng)建的所有對(duì)象。每個(gè)電機(jī)的半橋數(shù)量也在此處設(shè)置。在我的情況下,我必須使用最多四個(gè),但根據(jù)您的泵,您可能可以使用更少。我建議您查看這篇文章以了解錯(cuò)誤代碼和調(diào)試TLE94112 。
void setup()
{
// Switch on communications
Serial.begin(BAUD);
while (!Serial){};
// Enable MotorController on all Shields and Motors
controller.begin();
// IMPORTANT connect PWM to Lowside as higside is active Free wheeling
motor_0.initConnector(motor_0.HIGHSIDE, controller.TLE_NOPWM, controller.TLE_HB1, controller.TLE_HB2, controller.TLE_HB7, controller.TLE_HB8);
motor_0.initConnector(motor_0.LOWSIDE, controller.TLE_PWM1, controller.TLE_HB3, controller.TLE_HB4, controller.TLE_HB5, controller.TLE_HB6);
// start the motor controller
motor_0.begin();
motor_0.coast();
// end the setup function
logger.logln("Init ready");
}
反復(fù)檢查陣列中的loop()
所有植物,最后一次澆水的時(shí)間,以及該時(shí)間是否超過(guò)所需的澆水間隔(以天為單位)。如果是這樣,則給植物澆水。最后的延遲減少了這些檢查之間的時(shí)間。
void loop()
{
uint32_t ct = millis();
for(int i = 0; i < plant_nr; i++){
if((ct - last_pumped[i]) >= (plants[i]->getPump_interval_days()) * millis_in_day){
logger.log("Pumping Pump ");
logger.log(i);
logger.log(" at ");
logger.logln(ct);
plants[i]->pump();
last_pumped[i] = ct;
}
}
logger.error_status(controller);
delay((uint32_t)1000); //this can be increased even more
}
這就是這個(gè)項(xiàng)目的全部?jī)?nèi)容。隨意在您自己的設(shè)置中使用代碼并通過(guò)例如使用 RT-Clock 或包括多個(gè)泵來(lái)擴(kuò)展它。
在這里你可以看到我的設(shè)置:
?
?
?
- 節(jié)日花環(huán)自動(dòng)化開(kāi)源項(xiàng)目
- 溫室自動(dòng)化開(kāi)源硬件
- 家庭自動(dòng)化開(kāi)源案例
- 照明自動(dòng)化開(kāi)源分享
- WaterSmart植物澆水裝置開(kāi)源
- 自動(dòng)植物澆水系統(tǒng)開(kāi)源分享
- 智能植物澆水系統(tǒng)開(kāi)源案例
- 雙植物澆水系統(tǒng)開(kāi)源分享
- 室內(nèi)植物澆水系統(tǒng)開(kāi)源分享
- 智能植物澆水系統(tǒng)開(kāi)源
- 智能植物澆水系統(tǒng)開(kāi)源分享
- 智能植物澆水系統(tǒng)開(kāi)源項(xiàng)目
- 家庭自動(dòng)化開(kāi)源分享
- PCB家庭自動(dòng)化開(kāi)源分享
- 使用樹(shù)莓派2實(shí)現(xiàn)的植物澆水系統(tǒng)的資料合集 56次下載
- 自動(dòng)化焊接機(jī)器人:引領(lǐng)制造業(yè)未來(lái)的高效工具 333次閱讀
- 工業(yè)自動(dòng)化和自動(dòng)化區(qū)別是什么 1029次閱讀
- 過(guò)程自動(dòng)化控制和運(yùn)動(dòng)自動(dòng)化控制的原理詳解 1350次閱讀
- Selenium在自動(dòng)化中有何用處 1612次閱讀
- 如何利用樹(shù)莓派Zero實(shí)現(xiàn)自動(dòng)室內(nèi)園丁的設(shè)計(jì) 1356次閱讀
- 如何自學(xué)PLC與自動(dòng)化? 2567次閱讀
- 歐司朗推出的新型LED技術(shù)幫助植物生長(zhǎng)促進(jìn)綠色生態(tài) 772次閱讀
- 自動(dòng)澆灌噴淋控制系統(tǒng)怎樣來(lái)實(shí)現(xiàn) 4427次閱讀
- 自動(dòng)澆花系統(tǒng)的設(shè)計(jì)及制作 基于Arduino 2.5w次閱讀
- ATE自動(dòng)化測(cè)試系統(tǒng)是什么_ATE自動(dòng)化測(cè)試系統(tǒng)介紹 3.2w次閱讀
- 自動(dòng)化領(lǐng)域初涉水 非標(biāo)自動(dòng)化和自動(dòng)化到底有哪些區(qū)別? 6088次閱讀
- jenkins自動(dòng)化部署 4558次閱讀
- arduino測(cè)量土壤濕度自動(dòng)澆水提醒 1.3w次閱讀
- 紅帽推出Ansible 2.2 :為開(kāi)源自動(dòng)化框架奠定牢靠的基礎(chǔ) 984次閱讀
- 工程師DIY智能灌溉器解決植物澆水難題 2364次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多