Programmable Load V1

Dependencies:   USBDevice mbed

Fork of THzBiasControl08 by malcolm lear

Committer:
malcolmlear
Date:
Thu Mar 08 17:13:58 2018 +0000
Revision:
11:ceabd476b6cd
Parent:
10:6924c58f3a91
Version 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 7:5e693654d5b4 1 #include "mbed.h"
samux 7:5e693654d5b4 2 #include "USBSerial.h"
malcolmlear 10:6924c58f3a91 3
malcolmlear 11:ceabd476b6cd 4 AnalogIn ain(p20); // read load voltage
malcolmlear 11:ceabd476b6cd 5 AnalogOut aout(p18); // set load current
malcolmlear 10:6924c58f3a91 6 USBSerial serial; // USB serial communication
malcolmlear 10:6924c58f3a91 7
malcolmlear 11:ceabd476b6cd 8 float io = 0; // load current 0 to 1023
malcolmlear 11:ceabd476b6cd 9 int vi; // load voltage
malcolmlear 10:6924c58f3a91 10 int t, i, e, len;
malcolmlear 10:6924c58f3a91 11 char CmdIn[128];
malcolmlear 11:ceabd476b6cd 12 char CmdIL[] = "IL="; // set load current
malcolmlear 11:ceabd476b6cd 13 char CmdVL[] = "VL"; // return load voltage
malcolmlear 10:6924c58f3a91 14 char CmdID[] = "ID"; // Identification
malcolmlear 10:6924c58f3a91 15
malcolmlear 11:ceabd476b6cd 16 void SetCurrent(float d) {
malcolmlear 11:ceabd476b6cd 17 d = d - (d / 10) - 10; // Bodge it !!
malcolmlear 11:ceabd476b6cd 18 d = d / 1024; //
malcolmlear 11:ceabd476b6cd 19 aout = d;
malcolmlear 10:6924c58f3a91 20 }
malcolmlear 10:6924c58f3a91 21
malcolmlear 10:6924c58f3a91 22 int main() {
malcolmlear 11:ceabd476b6cd 23 SetCurrent(io);
samux 7:5e693654d5b4 24 while(1)
samux 7:5e693654d5b4 25 {
malcolmlear 10:6924c58f3a91 26 e = 1; // set error
malcolmlear 10:6924c58f3a91 27 serial.scanf("%s", CmdIn);
malcolmlear 11:ceabd476b6cd 28 if (strcmp(CmdIn, CmdVL) == 0) {
malcolmlear 11:ceabd476b6cd 29 vi = ain * 1024;
malcolmlear 11:ceabd476b6cd 30 serial.printf("%d\n", vi);
malcolmlear 10:6924c58f3a91 31 e = 0;
malcolmlear 10:6924c58f3a91 32 }
malcolmlear 11:ceabd476b6cd 33 if (strncmp(CmdIn, CmdIL, 3) == 0) {
malcolmlear 11:ceabd476b6cd 34 io = 0;
malcolmlear 10:6924c58f3a91 35 len = strlen(CmdIn);
malcolmlear 11:ceabd476b6cd 36 for(i=3; i<len; i++){
malcolmlear 10:6924c58f3a91 37 t = CmdIn[i] - '0';
malcolmlear 10:6924c58f3a91 38 if ((t >= 0) && (t <= 9)) {
malcolmlear 11:ceabd476b6cd 39 io = io * 10 + t;
malcolmlear 10:6924c58f3a91 40 }
malcolmlear 10:6924c58f3a91 41 else {
malcolmlear 11:ceabd476b6cd 42 io = -1; // on input error make v out of range
malcolmlear 10:6924c58f3a91 43 break;
malcolmlear 10:6924c58f3a91 44 }
malcolmlear 10:6924c58f3a91 45 }
malcolmlear 11:ceabd476b6cd 46 if ((io >= 0) && (io <= 1023)) {
malcolmlear 11:ceabd476b6cd 47 SetCurrent(io);
malcolmlear 10:6924c58f3a91 48 e = 0;
malcolmlear 10:6924c58f3a91 49 }
malcolmlear 10:6924c58f3a91 50 }
malcolmlear 10:6924c58f3a91 51 if (strcmp(CmdIn, CmdID) == 0) {
malcolmlear 11:ceabd476b6cd 52 serial.printf( "Load Monitor V1.0\n");
malcolmlear 10:6924c58f3a91 53 e = 0;
malcolmlear 10:6924c58f3a91 54 }
malcolmlear 10:6924c58f3a91 55 if (e == 1) {
malcolmlear 10:6924c58f3a91 56 serial.printf( "Command Error ");
malcolmlear 10:6924c58f3a91 57 serial.printf("%s\n", CmdIn);
malcolmlear 10:6924c58f3a91 58 }
malcolmlear 10:6924c58f3a91 59 else {
malcolmlear 10:6924c58f3a91 60 serial.printf( "Command Executed\n");
malcolmlear 10:6924c58f3a91 61 }
samux 9:d88699a0905a 62 wait(1);
samux 7:5e693654d5b4 63 }
malcolmlear 10:6924c58f3a91 64 }