MakerHub開源硬體系列文章之一:資料采集卡-數字輸出
作者:everddm,微信公衆号:MakerHub
這是一個開源的硬體+對應的開源軟體+應用示例,可以商用,轉載請注明出處
LOGO左邊是LabVIEW,右邊是一個小螺絲刀,我自己畫的,還蠻好看的。
文章目錄
- MakerHub開源硬體系列文章之一:資料采集卡-數字輸出
- 前言
- 一、MakerHub開源硬體是什麼?
- 二、使用步驟
-
- 1.PCB闆
- 2.Atmega328P的源程式
- 3.LabVIEW上位機程式
- 總結
前言
MakerHub開源系列之一,主要是一個以Atmega328P為主要核心晶片的序列槽采集卡。
一、有開源的PCB檔案
二、有Atmega328P的源碼
三、有對應的LabVIEW程式
四、其他語言也可用,隻要是可讀序列槽的都可用
一、MakerHub開源硬體是什麼?
MakerHub開源硬體是一種超低成本的LabVIEW開源開發硬體,主要作為資料采集卡來使用,用以替代官方高成本的USB6008等和CDAQ系列。
二、使用步驟
1.PCB闆
PCB闆可以直接在以下連結下載下傳,目前隻支援GitHub,後期會同步到CSDN和碼雲。
目前還隻是beta版本,V0.9,慢慢完善中。。。
下載下傳了直接去加工就好了,也可以做定制化的修改。
如果您有更好的主意,也歡迎在文章下面留言,我可能會吸收進開源系列中哦。
目前某創、某配加工雙層闆子,打樣5塊闆都免費。
這裡也有我已經做好焊好的,目前純手工做的,有需要可以選擇。
https://item.taobao.com/item.htm?spm=a230r.1.14.16.11a67867DsRguH&id=651706509793&ns=1&abbucket=19#detail
2.Atmega328P的源程式
其實Atmega328P就是Arduino Nano的主要:
是以需要安裝Aruino IDE,這個IDE是我學習程式設計以來,除了譚志強C語言之外,安裝最簡單的IDE,是以請電腦螢幕前的你不要慌,官網下載下傳之後輕按兩下就完事了。至于下面的程式如何燒進晶片,網上大把大把的教程。
這是源代碼(GitHub跟這個一樣,但是之後可能也許大概會更新):
/*
by MakerHub,微信公衆号也是:MakerHub
www.LabVIEWMakerHub.cn
Github位址:
碼雲位址:
用來将數字和模拟IO口發送給序列槽,可以用LabVIEW調用;
14個Digital Input或者Output,或者可以自由設定;
還有ADC和PWM可以用;
*/
String SerialOrder = "";
bool stringComplete = false;
int i =0;
void setup() {
Serial.begin(9600);
// Serial1.begin(9600);
//inputString.reserve(200);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
SerialOrder.reserve(200);
}
void loop() {
if (stringComplete) {
// Serial.println(SerialOrder); (char)Serial.read();
if(SerialOrder.substring(0, 4) == "A33A" && SerialOrder.substring(31,35) == "A99A"){
//PIN0
if (SerialOrder.substring(4, 5) == "1") {
digitalWrite(0, HIGH);
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(0, LOW);
}
//PIN1
if (SerialOrder.substring(6, 7) == "1") {
digitalWrite(1, HIGH);
} else {
digitalWrite(1, LOW);
}
//PIN2
if (SerialOrder.substring(8, 9) == "1") {
digitalWrite(2, HIGH);
} else {
digitalWrite(2, LOW);
}
//PIN3
if (SerialOrder.substring(10, 11) == "1") {
digitalWrite(3, HIGH);
} else {
digitalWrite(3, LOW);
}
//PIN4
if (SerialOrder.substring(12, 13) == "1") {
digitalWrite(4, HIGH);
} else {
digitalWrite(4, LOW);
}
//PIN5
if (SerialOrder.substring(14, 15) == "1") {
digitalWrite(5, HIGH);
} else {
digitalWrite(5, LOW);
}
//PIN6
if (SerialOrder.substring(16, 17) == "1") {
digitalWrite(6, HIGH);
} else {
digitalWrite(6, LOW);
}
//PIN7
if (SerialOrder.substring(18, 19) == "1") {
digitalWrite(7, HIGH);
} else {
digitalWrite(7, LOW);
}
//PIN8
if (SerialOrder.substring(20, 21) == "1") {
digitalWrite(8, HIGH);
} else {
digitalWrite(8, LOW);
}
//PIN9
if (SerialOrder.substring(22, 23) == "1") {
digitalWrite(9, HIGH);
} else {
digitalWrite(9, LOW);
}
//PIN10
if (SerialOrder.substring(24, 25) == "1") {
digitalWrite(10, HIGH);
} else {
digitalWrite(10, LOW);
}
//PIN11
if (SerialOrder.substring(26, 27) == "1") {
digitalWrite(11, HIGH);
} else {
digitalWrite(11, LOW);
}
//PIN12
if (SerialOrder.substring(28, 29) == "1") {
digitalWrite(12, HIGH);
} else {
digitalWrite(12, LOW);
}
//PIN13
if (SerialOrder.substring(30, 31) == "1") {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
stringComplete = false;
SerialOrder="";
}
// Serial.println(SerialOrder);
i+=1;
if(i>1000){
i=0;
}
if(fmod(i,12)==5){
// 讀取A6引腳的模拟信号:(範圍0 - 1023)轉為(0 - 5V):
int sensorValueA6 = analogRead(A6);
int sensorValueA7 = analogRead(A7);
// 輸出
Serial.println("A55A"+String(sensorValueA6)+"-"+String(sensorValueA7)+"A66A");
// Serial.println(i);
}
delay(10);
}
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
SerialOrder += inChar;
// if the incoming character is a newline, set a flag so the main loop can
// do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
3.LabVIEW上位機程式
其實就是讀序列槽處理序列槽資料:
LabVIEW是用2014版本寫的,我覺得現在基本上所有的人都比2014版本新,可以保證大家不用找人儲存低版本。
總結
以上就是今天要講的内容,以後會陸續更新模拟信号輸入輸出采集闆,估計還會有基礎的高速多路熱電偶采集闆等等等等。