diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..3ffbd44 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: grodansparadis +patreon: vscp diff --git a/kelvin_ntc.X/MyConfig.mc3 b/kelvin_ntc.X/MyConfig.mc3 new file mode 100644 index 0000000..b8c2c8e --- /dev/null +++ b/kelvin_ntc.X/MyConfig.mc3 @@ -0,0 +1,10594 @@ + + + + System Module + class com.microchip.mcc.mcu8.systemManager.SystemManager + + + INTERNAL OSCILLATOR + class com.microchip.mcc.mcu8.systemManager.osc.Osc + + + WDT + class com.microchip.mcc.mcu8.systemManager.wdt.WDT + + + Pin Module + class com.microchip.mcc.mcu8.pinManager.PinManager + + + RESET + class com.microchip.mcc.mcu8.systemManager.reset.RESET + + + ECAN + class com.microchip.mcc.mcu8.modules.can.CAN + + + Interrupt Module + class com.microchip.mcc.mcu8.interruptManager.InterruptManager + + + + + + + + + 0 + + + + 0 + + + + set + + + + -1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + Filter will only accept standard ID messages + + + + CANTX2 pin will have digital I/O function + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 3 + + + + 4 + + + + disabled + + + + 2 + + + + 5 + + + + disabled + + + + 6 + + + + 1 + + + + 7 + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 1 + + + + Filter will only accept standard ID messages + + + + FOSC + + + + set + + + + 0 + + + + 0 + + + + 0 + + + + RXB0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + No activity on the CAN bus + + + + 0 + + + + 1 + + + + 52 + + + + 1 + + + + 0 + + + + No Receive Buffer 0 overflow to Receive Buffer 1 + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + disabled + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + clear + + + + 0 + + + + 2 + + + + Disable Transmit Buffer 1 interrupt + + + + 0 + + + + none + + + + 3 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + Interrupt is disabled + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 2 + + + + 0 + + + + 0 + + + + set + + + + Automatically cleared when the message is successfully sent + + + + 22 + + + + 0 + + + + 36 + + + + 1048576 + + + + 0 + + + + 7 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 128 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + enabled + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 43 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + set + + + + enabled + + + + 1 + + + + 0 + + + + OFF + + + + 0 + + + + 0 + + + + 10 + + + + 0 + + + + When a remote transmission request is received, TXREQ will be unaffected + + + + 0 + + + + 3 + + + + 0 + + + + Transmit buffer has not completed transmission of a message + + + + 0 + + + + 0 + + + + 0 + + + + clear + + + + 0 + + + + 0 + + + + 0 + + + + none + + + + 0 + + + + none + + + + 0 + + + + 1 + + + + none + + + + none + + + + none + + + + none + + + + none + + + + disabled + + + + 0 + + + + 2 + + + + 0 + + + + 0 + + + + 10 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 7 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + none + + + + 0 + + + + 7 + + + + 1 + + + + 2 + + + + none + + + + 255 + + + + set + + + + none + + + + none + + + + none + + + + none + + + + input + + + + none + + + + none + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 9 + + + + 0 + + + + Receive Buffer n has not overflowed + + + + clear + + + + 5 + + + + Data length = 0 bytes + + + + 0 + + + + none + + + + none + + + + none + + + + none + + + + 0 + + + + none + + + + none + + + + 0 + + + + none + + + + none + + + + 0 + + + + 1 + + + + disabled + + + + input + + + + 0 + + + + set + + + + HS2 + + + + 6 + + + + 0 + + + + 0 + + + + 0 + + + + 1000000 + + + + disabled + + + + 0 + + + + 0 + + + + 1 + + + + disabled + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + Both standard and extended identifier messages will be accepted + + + + 0 + + + + 0 + + + + 59 + + + + 1 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 16 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + clear + + + + 48 + + + + 57 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 640 + + + + 1 + + + + 0 + + + + 0 + + + + 4 + + + + 0 + + + + 3 + + + + 0 + + + + 6 + + + + 5 + + + + 7 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 61 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + clear + + + + 3 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + disabled + + + + 0 + + + + input + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + INTRC + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 13 + + + + 1 + + + + 0 + + + + 0 + + + + Interrupt is disabled + + + + 1 + + + + 1 + + + + 4 + + + + 48 + + + + 3 + + + + 2 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 7 + + + + 6 + + + + 0 + + + + 5 + + + + 1 + + + + 0 + + + + 0 + + + + RXB0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + RXB0 + + + + 0 + + + + 1 + + + + 0 + + + + OFF + + + + 34 + + + + When a remote transmission request is received, TXREQ will be unaffected + + + + 0 + + + + Buffer 5 is configured in Receive mode + + + + 1 + + + + 18 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + Message will transmit standard ID + + + + 28 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + No message was transmitted + + + + 0 + + + + 0 + + + + 1 + + + + Low priority + + + + 0 + + + + 1 + + + + 1 + + + + No transmit buffer is ready for reload + + + + 0 + + + + 0 + + + + did not occur + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + Data length = 0 bytes + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 8MHz_HF + + + + 0 + + + + 0 + + + + 6 + + + + 0 + + + + 0 + + + + 0 + + + + input + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Message was not aborted + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 8 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + 4 + + + + 0 + + + + No receive buffer has received a new message + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 7 + + + + 0 + + + + POR or CLRWDT + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + Disable CAN module error interrupt + + + + 0 + + + + 0 + + + + Receive all valid messages as per acceptance filters + + + + 0 + + + + 0 + + + + 0 + + + + 15 + + + + 15 + + + + 0 + + + + 0 + + + + 56 + + + + 6 + + + + 0 + + + + + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + Transmit buffer interrupt is disabled + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 2 + + + + 0 + + + + 3 + + + + 0 + + + + 36 + + + + 6 + + + + Disable Transmit Buffer 2 interrupt + + + + 7 + + + + 4 + + + + 5 + + + + + + + + 0 + + + + + + + + 2 + + + + 16 + + + + 0 + + + + Buffer 0 is configured in Receive mode + + + + RXB0 + + + + 1 + + + + 1 + + + + 64 + + + + off + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + + + + + 0 + + + + 0 + + + + + + + + 0 + + + + 0 + + + + ISR_Pin Module_RBI + + + + + + + + 4 + + + + + + + + + + + + OFF + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Filter will only accept standard ID messages + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + Low priority + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 1 + + + + 5 + + + + 1 + + + + 6 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 192 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 29 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + Disable invalid message received interrupt + + + + set + + + + 0 + + + + 0 + + + + 0 + + + + Filter will only accept standard ID messages + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + Disable Receive Buffer 1 interrupt + + + + 0 + + + + 0 + + + + set + + + + 0 + + + + Message will transmit standard ID + + + + 0 + + + + Receive Buffer 0 has not overflowed + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + POR or CLRWDT + + + + 0 + + + + 0 + + + + OFF + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 31 + + + + 0 + + + + 0 + + + + 1 + + + + RXB0 + + + + Transmitted message will have the RTR bit cleared + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + Low priority + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + Message was not aborted + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 5 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Message was not aborted + + + + Acceptance Mask 0 + + + + 125kbps + + + + clear + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 4 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + Buffer 2 is configured in Receive mode + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + HS oscillator (High power, 16 MHz - 25 MHz) + + + + 0 + + + + 1 + + + + 96 + + + + 0 + + + + 0 + + + + 0 + + + + Filter will only accept standard ID messages + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + not stable + + + + 8 + + + + 4 + + + + clear + + + + 12 + + + + Acceptance Mask 0 + + + + FIFO high watermark is not reached + + + + MSK5 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 8 + + + + 5 + + + + 0 + + + + 1 + + + + 0 + + + + 76 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 49 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + clear + + + + enabled + + + + 0 + + + + 0 + + + + TQ = (2 x 1)/FOSC + + + + 0 + + + + Buffer 1 is configured in Receive mode + + + + Buffer 3 is configured in Receive mode + + + + 0 + + + + 1 + + + + 2 + + + + 1 + + + + 12 + + + + 0 + + + + 0 + + + + 124 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 16 + + + + 0 + + + + 17 + + + + 0 + + + + 2 + + + + Enable CAN bus activity wake-up feature + + + + clear + + + + 1 + + + + 0 + + + + 20 + + + + 21 + + + + 0 + + + + 22 + + + + 1 + + + + 23 + + + + 0 + + + + 0 + + + + 40 + + + + 18 + + + + 19 + + + + 2 + + + + 0 + + + + 1 + + + + 1 + + + + 20 + + + + SOIC28 + + + + disabled + + + + 31.0 KHz + + + + 0 + + + + 29 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + OFF + + + + 2 + + + + 1 + + + + 0 + + + + Automatically cleared when the message is successfully sent + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + clear + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 50 + + + + 7 + + + + 0 + + + + 0 + + + + 0 + + + + PORTB + + + + 0 + + + + 0 + + + + Filter will only accept standard ID messages + + + + OFF + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + analog + + + + Fosc + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + Data length = 0 bytes + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + RXB0 + + + + ZPBORMV + + + + 0 + + + + 0 + + + + Data length = 0 bytes + + + + 0 + + + + 0 + + + + clear + + + + 63 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + No message was transmitted + + + + Priority Level 0 (lowest priority) + + + + 0 + + + + 0 + + + + 18 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 7 + + + + OFF + + + + 8MHz_HF + + + + 0 + + + + 1 + + + + 4 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + Transmitted message will have the TXRTR bit cleared + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + 1000000 + + + + 0 + + + + 14 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + clear + + + + 0 + + + + 2 + + + + 0 + + + + 0 + + + + 54 + + + + Received message is a standard identifier frame + + + + 0 + + + + Low priority + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 7 + + + + 0 + + + + 0 + + + + 0 + + + + clear + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + Low priority + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 8 + + + + 55 + + + + 0 + + + + 0 + + + + 0 + + + + 26 + + + + not stable + + + + 0 + + + + 0 + + + + 0 + + + + 6 + + + + 0 + + + + Interrupt is disabled + + + + 6 + + + + Disable Transmit Buffer 0 interrupt + + + + 0 + + + + 0 + + + + input + + + + 1 + + + + 9 + + + + 0 + + + + analog + + + + 0 + + + + 2 + + + + 4 + + + + 1 + + + + 0 + + + + 3 + + + + analog + + + + 0 + + + + 5 + + + + 2 + + + + 1 + + + + 7 + + + + 6 + + + + 5 + + + + Filter will only accept standard ID messages + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 6 + + + + 2 + + + + 0 + + + + 0 + + + + Disable Receive Buffer 0 interrupt + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + analog + + + + 0 + + + + 0 + + + + 2 + + + + 1 + + + + input + + + + PORTB + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 58 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 32 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + 0 + + + + 0 + + + + 0 + + + + analog + + + + 19 + + + + 4 + + + + 1 + + + + 4 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 12 + + + + Automatically cleared when the message is successfully sent + + + + 16 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 1 + + + + 0 + + + + disabled + + + + 0 + + + + 1 + + + + 0 + + + + + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 6 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 4 + + + + 5 + + + + 0 + + + + 2 + + + + 3 + + + + 8 + + + + 16 + + + + 0 + + + + 0 + + + + 1 + + + + OFF + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 3 + + + + 6 + + + + 7 + + + + input + + + + 21 + + + + 0 + + + + 6 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 3 + + + + 1 + + + + input + + + + A remote transmission request is not received + + + + 1 + + + + 1 + + + + analog + + + + 0 + + + + 0 + + + + 0 + + + + Transmissions proceeding as normal + + + + 0 + + + + Filter will only accept standard ID messages + + + + 1 + + + + 24 + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + disabled + + + + disabled + + + + 1 + + + + 3 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Transmitted message will have the RTR bit cleared + + + + disabled + + + + disabled + + + + 1 + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + 7 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + disabled + + + + 4 + + + + disabled + + + + disabled + + + + 1 + + + + 0 + + + + 0 + + + + 8 + + + + 0 + + + + 1 + + + + 2 + + + + 0 + + + + 1 + + + + 6 + + + + Message was not aborted + + + + 5 + + + + 0 + + + + 4 + + + + 0 + + + + 3 + + + + Use the PLL as the source of the CAN system clock + + + + 8 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 24 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Requests Configuration Mode + + + + 0 + + + + Low priority + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 1 + + + + disabled + + + + 0 + + + + 23 + + + + disabled + + + + disabled + + + + 0 + + + + 2 + + + + PORTB + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 7 + + + + 1 + + + + 60 + + + + 0 + + + + When a remote transmission request is received, TXREQ will be unaffected + + + + 0 + + + + Low priority + + + + 0 + + + + 15 + + + + 8 + + + + 1 + + + + 0 + + + + Received message is a standard identifier frame + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 224 + + + + Interrupt is disabled + + + + 0 + + + + analog + + + + Acceptance Mask 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + Receive buffer is open to receive a new message + + + + Transmit buffer has not completed transmission of a message + + + + 0 + + + + 0 + + + + 0 + + + + 25 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + 7 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + RXB0 + + + + 1 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + Acceptance Mask 0 + + + + 28 + + + + analog + + + + 5 + + + + 0 + + + + 1 + + + + 64 + + + + 1 + + + + 4 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Low priority + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + disabled + + + + 1 + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + 27 + + + + 1 + + + + disabled + + + + 2 + + + + disabled + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 1 + + + + 255 + + + + 64 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 4 + + + + 3 + + + + input + + + + Transmit buffer interrupt is disabled + + + + 6 + + + + 5 + + + + Automatically cleared when the message is successfully sent + + + + 2 + + + + 251 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + RXB0 + + + + 7 + + + + No message was transmitted + + + + 0 + + + + 0 + + + + No message was transmitted + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + enabled + + + + 0 + + + + 0 + + + + 0 + + + + 6 + + + + 0 + + + + Priority Level 0 (lowest priority) + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + input + + + + Receive Buffer 1 has not received a new message + + + + 5 + + + + 1 + + + + CANTX pin will be tri-state when recessive + + + + 0 + + + + Data length = 0 bytes + + + + 0 + + + + RXB0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Transmit Buffer 1 has not completed transmission of a message + + + + disabled + + + + 0 + + + + 6 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + Acceptance Mask 0 + + + + When a remote transmission request is received, TXREQ will be unaffected + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 96 + + + + 2 + + + + 1 + + + + 0 + + + + 7 + + + + input + + + + 10 + + + + 0 + + + + 1 + + + + 0 + + + + 3 x TQ + + + + Received message is a standard identifier frame + + + + 0 + + + + 0 + + + + 239 + + + + 44 + + + + Message was not aborted + + + + 0 + + + + 0 + + + + 14 + + + + 0 + + + + 1 + + + + enabled + + + + 0 + + + + 0 + + + + disabled + + + + 1 + + + + Acceptance Mask 0 + + + + 0 + + + + 0 + + + + 0 + + + + 186 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + occurred + + + + 0 + + + + 8 + + + + 0 + + + + 0 + + + + Receive all valid messages as per acceptance filters + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 5 + + + + Low priority + + + + input + + + + 1 + + + + 1 + + + + disabled + + + + 0 + + + + 6 + + + + 32 + + + + 0 + + + + 7 + + + + 0 + + + + 0 + + + + 2 + + + + 1 + + + + 3 + + + + 1 + + + + 4 + + + + 5 + + + + 2 + + + + Filter will only accept standard ID messages + + + + Acceptance Mask 0 + + + + 7 + + + + 0 + + + + 56 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 0 + + + + Automatically cleared when the message is successfully sent + + + + 0 + + + + 0 + + + + 0 + + + + ISR_ECAN_TXBI + + + + 0 + + + + 7 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + Acceptance Mask 0 + + + + 0 + + + + 0 + + + + 0 + + + + 51 + + + + 0 + + + + 0 + + + + 0 + + + + 127 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + Synchronization jump width time = 1 x TQ + + + + 15 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 9 + + + + 0 + + + + input + + + + 1 + + + + Transmitted message will have the TXRTR bit cleared + + + + 2 + + + + 0 + + + + 0 + + + + 0 + + + + Acceptance Mask 0 + + + + 0 + + + + 0 + + + + Disable bus activity wake-up interrupt + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + input + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + did not occur + + + + 0 + + + + 2 + + + + 0 + + + + Transmitted message will have the RTR bit cleared + + + + 0 + + + + Receive Buffer 1 has not overflowed + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + input + + + + Acceptance Mask 0 + + + + 2 + + + + 1 + + + + 0 + + + + 1 + + + + disabled + + + + 0 + + + + 1 + + + + 52 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + Transmitted message will have the RTR bit cleared + + + + 0 + + + + 60 + + + + 0 + + + + 2 + + + + 2 + + + + 124 + + + + 0 + + + + 0 + + + + 0 + + + + 20 + + + + 0 + + + + 0 + + + + 0 + + + + 8 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + Data length = 0 bytes + + + + disabled + + + + 0 + + + + Both standard and extended identifier messages will be accepted + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 53 + + + + 1 + + + + 0 + + + + Automatically cleared when the message is successfully sent + + + + 0 + + + + 0 + + + + 5 + + + + 124 + + + + 16 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 14 + + + + 0 + + + + 0 + + + + clear + + + + Acceptance Mask 0 + + + + Filter will only accept standard ID messages + + + + 2 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 64 + + + + 1 + + + + Disable all transmit buffer interrupts + + + + Filter will only accept standard ID messages + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + Acceptance Mask 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 64 + + + + 1 + + + + 0 + + + + 16000000 + + + + 0 + + + + HIGH + + + + 1 + + + + 0 + + + + 6 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + Acceptance Mask 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + clear + + + + RXB0 + + + + 0 + + + + 0 + + + + 0 + + + + 37 + + + + 0 + + + + 64 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + No CAN module errors + + + + RXB0 + + + + 0 + + + + Disable all receive buffer interrupts + + + + 1 + + + + 0 + + + + 4 + + + + 5 + + + + 32 + + + + 0 + + + + 2 + + + + 1 + + + + 3 + + + + 0 + + + + 6 + + + + 0 + + + + 7 + + + + 0 + + + + 0 + + + + Interrupt is disabled + + + + 0 + + + + 1 + + + + 0 + + + + Automatically cleared when the message is successfully sent + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + Acceptance Mask 0 + + + + 0 + + + + clear + + + + 24 + + + + 2 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 16 + + + + 0 + + + + 0 + + + + 0 + + + + Transmit Buffer 2 has not completed transmission of a message + + + + disabled + + + + 1 + + + + ON + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + Data length = 0 bytes + + + + 3 + + + + 1 + + + + 4 + + + + 128 + + + + 5 + + + + 6 + + + + 0 + + + + 7 + + + + Enhanced FIFO mode( Mode 2) + + + + 0 + + + + 3 + + + + Acceptance Mask 0 + + + + Low priority + + + + 30 + + + + 0 + + + + 0 + + + + 0 + + + + OFF + + + + 0 + + + + 1 + + + + 0 + + + + 2 + + + + clear + + + + 0 + + + + 1 + + + + 7 + + + + 0 + + + + 0 + + + + 2 + + + + 0 + + + + 0 + + + + 3 + + + + 3 + + + + 1 + + + + 0 + + + + 64 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + Buffer 4 is configured in Receive mode + + + + 0 + + + + 0 + + + + Message will transmit standard ID + + + + 2 + + + + Received message is a standard identifier frame + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 6 + + + + Acceptance Mask 0 + + + + 0 + + + + 1 + + + + 35 + + + + 0 + + + + 8 + + + + 0 + + + + 0 + + + + 0 + + + + No message was transmitted + + + + input + + + + 0 + + + + 13 + + + + 0 + + + + clear + + + + 0 + + + + 0 + + + + 44 + + + + 3 + + + + 72 + + + + 0 + + + + 3 + + + + 75% + + + + No invalid message on the CAN bus + + + + 4 x TQ + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 24 + + + + 0 + + + + 0 + + + + Transmit buffer has not completed transmission of a message + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + OFF + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 128 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + Filter will only accept standard ID messages + + + + 0 + + + + 0 + + + + 0 + + + + Transmitted message will have the RTR bit cleared + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 0 + + + + 32 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 15 + + + + 0 + + + + 0 + + + + 0 + + + + 7 + + + + 0 + + + + 6 + + + + 0 + + + + 5 + + + + 4 + + + + 3 + + + + 2 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 46 + + + + 0 + + + + 2 + + + + 3 + + + + 0 + + + + 0 + + + + 0 + + + + 9 + + + + 8 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 33 + + + + RXB0 + + + + 1 + + + + 4 + + + + 0 + + + + 0 + + + + 3 + + + + input + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + 0 + + + + 6 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Received message is a standard identifier frame + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 41 + + + + 0 + + + + 0 + + + + 0 + + + + 3 + + + + 1 + + + + 0 + + + + 1 + + + + 4 + + + + Disable FIFO watermark interrupt + + + + 5 + + + + 0 + + + + When a remote transmission request is received, TXREQ will be unaffected + + + + Bus line is sampled once at the sample point + + + + 0 + + + + 0 + + + + 0 + + + + 12 + + + + 0 + + + + 0 + + + + 0 + + + + input + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + Data length = 0 bytes + + + + + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + OFF + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 1 + + + + 0 + + + + 8 x TQ + + + + 0 + + + + 1 + + + + 0 + + + + OFF + + + + Data length = 0 bytes + + + + 17 + + + + 0 + + + + ABSENT + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 4 + + + + 5 + + + + 0 + + + + 0 + + + + disabled + + + + A remote transmission request is not received + + + + 4 + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 5 + + + + + + + + 6 + + + + + + + + 7 + + + + 0 + + + + 0 + + + + 2 + + + + 0 + + + + 3 + + + + OFF + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 0 + + + + Freely programmable + + + + + + + + Automatically cleared when the message is successfully sent + + + + + + + + + + + + Filter will only accept standard ID messages + + + + 8 + + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + Filter will only accept standard ID messages + + + + 0 + + + + 0 + + + + 0 + + + + 128 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 38 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 16 + + + + 0 + + + + 68 + + + + + + + + + + + + + + + + 5 + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + OFF + + + + 0 + + + + Receive buffer is open to receive a new message + + + + 0 + + + + 5 + + + + OFF + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + disabled + + + + 0 + + + + disabled + + + + 2 + + + + 4 + + + + 1 + + + + 5 + + + + 2 + + + + 0 + + + + 3 + + + + 6 + + + + disabled + + + + 5 + + + + 1 + + + + 6 + + + + 0 + + + + 7 + + + + 7 + + + + 2 + + + + input + + + + 8 + + + + 0 + + + + 4 + + + + 3 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 500000 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + OFF + + + + 0 + + + + input + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 11 + + + + 0 + + + + 3 + + + + 0 + + + + 3 + + + + 7 + + + + 1 + + + + OFF + + + + 0 + + + + 0 + + + + OFF + + + + CAN bus line filter is not used for wake-up + + + + 1 + + + + output + + + + disabled + + + + 1 + + + + 0 + + + + 0 + + + + disabled + + + + 1 + + + + 4 + + + + 0 + + + + 0 + + + + RXB0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + clear + + + + OFF + + + + 1 + + + + 3 + + + + 0 + + + + 1 + + + + OFF + + + + 0 + + + + 0 + + + + 1 + + + + 64 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + Interrupt is disabled + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + enabled + + + + 0 + + + + input + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 11 + + + + HIGH + + + + clear + + + + 0 + + + + 0 + + + + OFF + + + + 5 + + + + 1 + + + + 0 + + + + input + + + + Transmitted message will have the RTR bit cleared + + + + 1 + + + + 0 + + + + RXB0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + CANTX2 pin will output CANTX + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + Transmit Buffer 0 has not completed transmission of a message + + + + disabled + + + + 15 + + + + disabled + + + + disabled + + + + disabled + + + + 0 + + + + OFF + + + + 0 + + + + 0 + + + + 8 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + disabled + + + + ISR_ECAN_RXBI + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + disabled + + + + Received message is a standard identifier frame + + + + 0 + + + + clear + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + OFF + + + + 3 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 17 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + clear + + + + 1 + + + + 0 + + + + 0 + + + + 40 + + + + 1 + + + + 0 + + + + 0 + + + + disabled + + + + 64 + + + + 0 + + + + 47 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 7 + + + + Disable CAN capture; RC2/CCP1 input to CCP1 module + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + OFF + + + + 1 + + + + 0 + + + + 0 + + + + 4 + + + + Interrupt is disabled + + + + disabled + + + + 0 + + + + Automatically cleared when the message is successfully sent + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 45 + + + + 1 + + + + 0 + + + + Transmit buffer interrupt is disabled + + + + Message was not aborted + + + + 8 + + + + 0 + + + + 1000000 + + + + 0 + + + + BB2K + + + + 0 + + + + 0 + + + + 0 + + + + 42 + + + + 0 + + + + 0 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 6 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + OFF + + + + 2 + + + + SBORDIS + + + + 11 + + + + 5 + + + + 0 + + + + 1 + + + + 0 + + + + 13 + + + + Receive Buffer 0 has not received a new message + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + Low priority + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + clear + + + + 0 + + + + 0 + + + + 0 + + + + When a remote transmission request is received, TXREQ will be unaffected + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + RXB0 + + + + 0 + + + + 0 + + + + 7 + + + + 0 + + + + Transmitted message will have the TXRTR bit cleared + + + + 0 + + + + 6 + + + + 0 + + + + Interrupt is disabled + + + + 0 + + + + 6 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 31 + + + + 8 + + + + 0 + + + + 2 + + + + 1 + + + + Filter will only accept standard ID messages + + + + 1 + + + + 0 + + + + 5 + + + + 0 + + + + Receive Buffer 0 + + + + 0 + + + + 1 + + + + 0 + + + + -1 + + + + 0 + + + + Priority Level 0 (lowest priority) + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + No message was transmitted + + + + 4 + + + + 0 + + + + 0 + + + + 7 + + + + 0 + + + + -- + + + + 2 + + + + 1 + + + + 0 + + + + 1000000 + + + + 0 + + + + 3 + + + + disabled + + + + disabled + + + + 0 + + + + disabled + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + 1 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 2 + + + + 39 + + + + 2 + + + + 4 + + + + 1 + + + + 2 + + + + 0 + + + + 0 + + + + 0 + + + + disabled + + + + Filter will only accept standard ID messages + + + + disabled + + + + 0 + + + + 7 + + + + 0 + + + + 5 + + + + 0 + + + + disabled + + + + 0 + + + + occurred + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + disabled + + + + 0 + + + + 4 + + + + 0 + + + + 4 + + + + 3 + + + + 2 + + + + 0 + + + + 0 + + + + 1 + + + + 6 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 5 + + + + 0 + + + + 8 + + + + disabled + + + + RXB0 + + + + disabled + + + + 0 + + + + 0 + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + disabled + + + + ON + + + + disabled + + + + 1 + + + + 2 + + + + 1 + + + + 0 + + + + 0 + + + + 7 + + + + 6 + + + + 0 + + + + 5 + + + + 31000 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 3 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 2 + + + + disabled + + + + 0 + + + + 0 + + + + 0 + + + + 8 + + + + 0 + + + + 0 + + + + \ No newline at end of file diff --git a/kelvin_ntc.X/nbproject/Makefile-genesis.properties b/kelvin_ntc.X/nbproject/Makefile-genesis.properties new file mode 100644 index 0000000..55e715b --- /dev/null +++ b/kelvin_ntc.X/nbproject/Makefile-genesis.properties @@ -0,0 +1,22 @@ +# +#Mon Dec 09 09:37:52 CET 2019 +Debug_26K80.languagetoolchain.version=1.21 +Relocated_26K80.Pack.dfplocation=/opt/microchip/mplabx/v5.30/packs/Microchip/PIC18F-K_DFP/1.2.72 +Relocated_2580.com-microchip-mplab-nbide-toolchainXC8-XC8LanguageToolchain.md5=f87389d82b4b299d292110931953ebdc +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=7cd2eead2ea6964989cbf02efe721a76 +Debug_26K80.languagetoolchain.dir=/opt/microchip/xc8/v1.21/bin +Relocated_26K80.com-microchip-mplab-nbide-toolchainXC8-XC8LanguageToolchain.md5=f87389d82b4b299d292110931953ebdc +Relocated_26K80.languagetoolchain.dir=/opt/microchip/xc8/v1.21/bin +Debug_2580.com-microchip-mplab-nbide-toolchainXC8-XC8LanguageToolchain.md5=f87389d82b4b299d292110931953ebdc +Relocated_2580.languagetoolchain.version=1.21 +Relocated_26K80.languagetoolchain.version=1.21 +configurations-xml=b6c009abdd483011558679ac49588f17 +Debug_26K80.com-microchip-mplab-nbide-toolchainXC8-XC8LanguageToolchain.md5=f87389d82b4b299d292110931953ebdc +Relocated_2580.Pack.dfplocation=/opt/microchip/mplabx/v5.30/packs/Microchip/PIC18Fxxxx_DFP/1.1.19 +Debug_26K80.Pack.dfplocation=/opt/microchip/mplabx/v5.30/packs/Microchip/PIC18F-K_DFP/1.2.72 +host.platform=linux +Debug_2580.languagetoolchain.dir=/opt/microchip/xc8/v1.21/bin +conf.ids=Relocated_2580,Debug_2580,Debug_26K80,Relocated_26K80 +Debug_2580.languagetoolchain.version=1.21 +Debug_2580.Pack.dfplocation=/opt/microchip/mplabx/v5.30/packs/Microchip/PIC18Fxxxx_DFP/1.1.19 +Relocated_2580.languagetoolchain.dir=/opt/microchip/xc8/v1.21/bin diff --git a/kelvin_ntc.X/nbproject/Package-Relocated_26K80.bash b/kelvin_ntc.X/nbproject/Package-Relocated_26K80.bash new file mode 100644 index 0000000..d897eba --- /dev/null +++ b/kelvin_ntc.X/nbproject/Package-Relocated_26K80.bash @@ -0,0 +1,73 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_CONF=Relocated_26K80 +CND_DISTDIR=dist +TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/kelvin_ntc.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +OUTPUT_BASENAME=kelvin_ntc.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} +PACKAGE_TOP_DIR=kelvinntc.x/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/package +rm -rf ${TMPDIR} +mkdir -p ${TMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory ${TMPDIR}/kelvinntc.x/bin +copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/package/kelvinntc.x.tar +cd ${TMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/kelvinntc.x.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${TMPDIR} diff --git a/kelvin_ntc.X/nbproject/private/private.xml b/kelvin_ntc.X/nbproject/private/private.xml index 6807a2b..5f7f68e 100644 --- a/kelvin_ntc.X/nbproject/private/private.xml +++ b/kelvin_ntc.X/nbproject/private/private.xml @@ -2,6 +2,9 @@ - + + file:/home/akhe/development/VSCP/can4vscp_kelvin_ntc10k/ECAN.c + file:/home/akhe/development/VSCP/can4vscp_kelvin_ntc10k/main.c + diff --git a/manual/.nojekyll b/manual/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/manual/GLOSSARY.md b/manual/GLOSSARY.md new file mode 100644 index 0000000..a276632 --- /dev/null +++ b/manual/GLOSSARY.md @@ -0,0 +1,41 @@ +## CANBUS +Control Area Network. A very robust network protocol that among other things is commonly used in cars and heavy machinery. + +## CAN4VSCP +VSCP level I over CAN. Also specifies bus-speed and power. + +## CANAL +CAN Abstraction Layer - VSCP interface used for VSCP level I drivers. Originally this was a CAN pure interface. + +## VSCP +Stands for *Very Simple Control Protocol* and is the name for the protocol and the framework used for the VSCP system. + +## VSCP & Friends +This is the name for the VSCP software package. A collection of VSCP software tools packed together including the VSCP daemon (vscpd), VSCP Works (vscpworks) and the VSCP helper library. + +## vscpd +The executable name for the VSCP server/daemon. + +## vscpworks +The executable name for VSCP Works. + +## IoT +Internet of Things, a term for connected **things**. + +## SECO +This abbrevation stands for **SE**nsor & **CO**ntrol. Some use **attenuator** for the same thing. + +## TCP/IP +The Transmission Control Protocol and Internet Protocol + +## UDP +User Datagram Protocol + +## OHAS +Open Home Automation Server + +## EDA +Acronym for **Event-Decision-Action** + +## OS +Operating System diff --git a/manual/README.md b/manual/README.md new file mode 100644 index 0000000..d2a41f4 --- /dev/null +++ b/manual/README.md @@ -0,0 +1,876 @@ +# CAN4VSCP Kelvin NTC10K module + +Document reversion: 2020-05-04 +Copyright © 2000-2020 Grodans Paradis AB, + +![Kelvin NTC10K](images/kelvin14.png) + +This documentation is for the [Kelvin NTC10K module](https://www.grodansparadis.com/kelvinntc10k/kelvin_ntc10ka.html). + +Disclaimer: © 2010-2020 Grodans Paradis AB. All rights reserved. Grodans Paradis AB®, logo and combinations thereof, are registered trademarks of Grodans Paradis AB. Other terms and product names may be trademarks of others. The information in this document is provided in connection with Grodans Paradis AB products. No license, express or implied or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Grodans Paradis AB products. Neither the whole nor any part of the information contained in or the product described in this document may be adapted or reproduced in any material from except with the prior written permission of the copyright holder. The product described in this document is subject to continuous development and improvements. All particulars of the product and its use contained in this document are given by Grodans Paradis AB in good faith. However all warranties implied or expressed including but not limited to implied warranties of merchantability or fitness for purpose are excluded. This document is intended only to assist the reader in the use of the product. Grodans Paradis AB. shall not be liable for any loss or damage arising from the use of any information in this document or any error or omission in such information or any incorrect use of the product. + +# Introduction + +![Kelvin NTC10K](./images/kelvin13.png) + + Kelvin NTC10K is a temperature module that can handle six temperature sensing elements of which one is internal. The module can be attached to a standard DIN Rail or be mounted directly on a wall (ordered as separate versions). + +The module fully adopts to the CAN4VSCP specification and can be powered directly over the bus with a 9-30V DC power source. It has a rich register set for configuration and any information events defined. It also have a decision matrix for easy dynamic event handling. + +VSCP CAN modules are designed to work on a CAN4VSCP bus which use ordinary RJ-45 connectors and is powered with a 9 - 28VDC power source where power is provided over the communication cable. This means there is no need for a separate power cable. All that is needed is a CAT5 or better twisted pair cable. Buss length can be a maximum of 500 meters with drops of maximum 24 meters length (up to a total of 120 meters). As for all CAN4VSCP modules the communication speed is fixed at 125 kbps. + +All VSCP modules contains information of there own setup, manual, hardware version, manufacturer etc. You just ask the module for the information you need and you will get it. When they are started up they have a default functionality that often is all that is needed to get a working setup. If the module have something to report it will send you an event and if it is setup to react on a certain type of event it will do it's work when you send event(s) to it. + +The module comes with a GUID (global unique id) and is programmed with a bootloader and VSCP module functionality that works right out of the box. + +You can control things with the module, such as intelligent relay control for heating and cooling that our Paris module have, or set channel individual high and low alarm levels to safely monitor temperatures, possibly in remote locations. + +# Geting started + + You need + +* RJ-45 patch cables or similar. +* A stable +9V - +28V DC power source. +* A host computer with a serial or USB interface. + +The Kelvin NTC10K module is powered from the CAN4VSCP bus. This article have information on how the bus is powered and set up. Follow it for a reliable setup. Don't forget the two 120 ohm terminators at each end of the bus. They are important! You can activate the on board terminator on the module if it is located at one end of your bus (see the [hardware section](#Hardware)). + +When you power the module by inserting the RJ-45 cable the red LED on the board should light up to indicate it is powered. This is just a power indicator LED. When you power the board for the first time the green led starts to blink to indicate that the module search for a nickname. During normal operation this LED should light steady. + +Remember that there need to be at least two CAN4VSCP (or other CAN device set to 125kbps) devices (one additional if you have the [Frankfurt RS-232](http://www.grodansparadis.com/frankfurt/rs232/frankfurt-rs232.html)) on the bus to be able to communicate. A single device can't talk by itself on a bus. It's an error. + +![Kelvin NTC10K](./images/odessa_inter_module_connector.png) + +As an alternative to power the Kelvin NTC module from the CAN4VSCP bus you can power it over the daisy chain connector. The [CAN4VSCP Power Injector](http://www.grodansparadis.com/powerinjector/can4vscp_big/powerinjector.html) is needed (or similar) for this. + +## Installing the module + +Connect the module to the CAN4VSCP bus. The red led led on the module should light up indicating that the device is powered. If this is the first time you start up the module the green lamp next to the initializing button will start to blink. This means that the module is trying to negotiate a nickname address with the rest of the modules on the bus. When it found a free nickname the green led will light steady. If the green led does not start to blink press the initialization button until it does. Now your module is ready to use. + +If the green led never stops blinking you have a problem with your bus as the typically mean that the module dos not find any other module on the bus. Remember there must always be at least two active modules. Also check cables and that you have 120 ohm terminators installed on both ends of the bus. + +When your module is installed it's time to configure it. + +## Connecting temperature sensor(s) + +![Thermistor](./images/termistor.jpg) + +To just test that communication works you don't need to install any external temperature sensors. You can work with the internal sensor. By default it will send the board temperature in degrees Celsius every 30 seconds. You can view VSCP traffic on the CAN4VSCP bus with all CAN tools set to 125kbit/s but VSCP Works makes handling, configuring, diagnosing VSCP stuff a lot more easy. So this may be the time to get to know this piece of software that works on both Linux and Window. + +The internal temperature sensor is heated by the processor and other things on the PCB so it will always give a bit of a high value. You can calibrate away this error if you want. See the [configuration section](#Configuration). + + Eventually you probably want to connect external temperature sensors to the module. You can connect any 10 Kohm NTC temperature sensor to the Kelvin NTC10K module. It helps if you know the B value of it for the temperature range you want to work in. You can get sensors and sensors on cables of different length from the FrogShop. + +Five external NTC sensor can be connected to the Kelvin NTC10KA module. It is recommended to use NTC thermistors with 10K @ 25 °C types for best result. There are sensors available for all kinds of temperature measurement needs. As noted above you need the B value from the sensors data sheet or to be able to use it with the Kelvin NTC10KA module. + +The main advantage for a NTC sensor is that it is low cost. You can get it from anywhere and you can get it in any type and dimension. NTC resistor is also not sensitive to cable length. Using a CAT-5e cable (4 pairs with AWG 24) we will experience something like 9.38 ohms/100m which will not effect a 10K NTC thermistor that much. + +Connect the thermistor to the Kelvin NTC10KA by connecting it to +5VDC and to one of the temperature inputs. A thermistor is not subject to polarity considerations so you can connect it in any way you want. You need to setup the B value for the sensor to get correct temperature measurements. The pin out for the terminal block is in the hardware section. + +## To measure temperature + +![Temperature measurements](./images/tempdiff.jpg) + + If you want to measure a temperature, for a room for example you will soon realize that temperature measurements has more to it then just hook up a sensor and measure the temperature. Look at the picture above. + +Each of the sensors shows a different temperature even when the sensor are on the same desk. If you walk around in the room things will be even more complex. Three sensors of the same type but on different height will show different results. + +The readings from the sensors of the Kelvin NTC module is given with two decimals. Does that mean we have 0.01°C precision? Unfortunately no! The thermistor has error and the analog reading circuitry (ADC) has error. + +We can approximate the expected error by first taking into account the thermistor resistance error. The thermistor is correct to 1%, which means that at 25°C it can read 10,100 to 9900 ohms. At around 25°C a difference of 450 ohms represents 1°C so 1% error means about +-0.25°C (you may be able to calibrate this away by determining the resistance of the thermistor in a 0°C ice bath and removing any offset). You can also spring for a 0.1% thermistor which will reduce the possible resistance error down to +-0.03°C + +Then there is the error of the ADC, for every bit that it is wrong the resistance (around 25°C) can be off by about 50 ohms. This isn't too bad, and is a smaller error than the thermistor error itself +-(0.1°C) but there is no way to calibrate it 'away' - just a higher precision ADC (12-16 bits instead of 10) will give you more precise readings + +In general, we think thermistors are higher precision than thermocouples, or most low cost digital sensors, but you will not get better than +-0.1°C accuracy on with a 1% thermistor and we would suggest assuming no better than +-0.5°C. + +You will in addition to this notice that the on-oard sensor will show a temperature that is higher then what you should expect, The same is if you connect a sensor directly to the board. This is due to the fact that the electronics on the board generate heat. This heat flows very well through the copper of the board giving faulty readings. The solution is to take away a degree or two from the reading. + +# Hardware + +## Most current information +You can find the most current information about the Kelvin NTC10K module at +https://www.grodansparadis.com/products.html. On the site you can also find links to the latest firmware, drivers and schematics etc for its use. + +## The raw facts +| Parameter | Value | +| --------- | ----- | + | Current hardware reversion | B | + | Current firmware version | See [firmware release page](https///github.com/grodansparadis/can4vscp_kelvinntc10k/releases) | + | Supply voltage | +9-+28 VDC | + | PCB Size | 42mm x 72mm | + | Mounting | DIN or wall | + | Power requirements | 0.1W | + | Communication: CAN4VSCP (CAN) | 125 kbps | + | Number of sensors supported | 6 | + +## Schematics + +![Schema for Kelvin NTC10K](images/schema_kelvin_ntc_rev_b.png) + +Schematics: Rev B (click picture to enlarge) + +## Components + +### Internal temperature sensor + +The internal temperature sensor used on the Kelvin NTC10KA is the Murata [NCP21XV103J03RA](https///www.google.se/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiu-ujjlrnJAhWDjiwKHY9aCQQQFggiMAA&url=http%3A%2F%2Fwww.murata.com%2F~%2Fmedia%2Fwebrenewal%2Fsupport%2Flibrary%2Fcatalog%2Fproducts%2Fthermistor%2Fntc%2Fr44e.ashx&usg=AFQjCNE0U3R9tCH8Mm3JbRtiqhAN5yqOaQ&sig2=3Ga5yx9Fc6e15Gvr6YVbPg). Data for this sensor is as follows + + | Description | Value | + | ----------- | ----- | + | Time constant | 10 s | + | B[25/100]- value | 3944K | + | Temperature range | -40...+125ºC | + | Resistance tolerance | 5% | + | Resistance @ 25ºC | 10 Kohm | + | Max effect | 210 @ 25ºC mW | + | B[25/50]- value | 3900 | + | B[25/85]- value | 3934 | + | B[25/100]- value| 3944K 3% | + | Max error (B[25/100]) | 2.8 (%/C) | + +![](./images/kelvin_parts_a.png) + +![](./images/kelvin_parts_b.png) + + + +## Connectors + +![](./images/kelvin_connectors.png) + + +### Terminal block + +![](./images/kelvin_12_pin.png) + + | Pin | Description | + | --- | ----------- | + | 1 | Ground (GND) | + | 2 | I/O 9 | + | 3 | I/O 8 | + | 4 | I/O 7 | + | 5 | I/O 6 | + | 6 | I/O 5 | + | 7 | I/O 4 | + | 8 | I/O 3 | + | 9 | I/O 2 | + | 10 | I/O 1 | + | 11 | I/O 0 | + | 12 | +5V (VCC) | + + + +### RJ-XX pin-out + +The unit is powered over the CAN4VSCP bus. The CAN4VSCP normally uses CAT5 or better twisted pair cable. You can use other cables if you which. The important thing is that the CANH and CANL signals uses a twisted cable. For connectors you can use RJ10, RJ11, RJ12 or the most common RJ45 connectors. + +Recommended connector is RJ-34/RJ-12 or RJ-11 with pin out as in this table. + + | Pin | Use | RJ-11 | RJ-12 | RJ-45 | Patch Cable wire color T568B | + | --- | --- | ----- | ----- | ----- | ---------------------------- | + | 1 | +9-28V DC | | | RJ-45 | Orange/White | + | 2 1 | +9-28V DC | | RJ-12 | RJ-45 | Orange | + | 3 2 1 | +9-28V DC | RJ-11 | RJ-12 | RJ-45 | Green/White | + | 4 3 2 | CANH | RJ-11 | RJ-12 | RJ-45 | Blue | + | 5 4 3 | CANL | RJ-11 | RJ-12 | RJ-45 | Blue/White | + | 6 5 4 | GND | RJ-11 | RJ-12 | RJ-45 | Green | + | 7 6 | GND | | RJ-12 | RJ-45 | Brown/White | + | 8 | GND | | | RJ-45 | Brown | + +![RJ-11/12/45 pin-out](./images/rj45.jpg) + +**RJ-11/12/45 pin-out** + +:!: Always use a pair of twisted wires for CANH/CANL for best noise immunity. If the EIA/TIA 56B standard is used this condition will be satisfied. This is good as most Ethernet networks already is wired this way. + + + +### Inter module connector + +The inter module connector can be used to connect modules that are physically close to each other together in an easy way. Remember that the minimum length of a connection cable is 30 cm. + + | Pin | Description | + | --- | ----------- | + | 1 | Power from CAN4VSCP bus | + | 2 | CANH | + | 3 | CANL | + | 4 | GND | + + +![Inter module connector](./images/odessa_inter_module_connector.png) + + +### PIC programming Connector + + | pin | Description | + | --- | ----------- | + | 1 | Reset | + | 2 | VCC | + | 3 | GND | + | 4 | PGD (RX of second serial port is here to) | + | 5 | PGC (TX of second serial port is here to) | + | 6 | LWPGM | + + +![Programming connector](./images/odessa_programming_connector.png) + + +### Functionality of the status LED + +The LED is used to indicate the status of the module. It will light steady when the firmware is running and will blink when the module is in the nickname discovery process. + + | LED | Description | + | --- | ----------- | + | Steady | No error. Firmware running. | + | Blinking | Module is going through the [nickname discovery process](http://www.vscp.org/docs/vscpspec/doku.php?id=vscp_level_i_specifics#address_or_nickname_assignment_for_level_i_nodes). | + + + +### CAN + +CAN4VSCP is a CAN based bus running at 125 kbps with the addition of DC power. If you are interested in how CAN works you have a pretty good intro [here](http://www.eeherald.com/section/design-guide/esmod9.html). + +CAN is known to be robust and is there for used in vehicles and in the industry. + +# Cabling + +## Cable length + +CAN4VSCP always communicate with 125kbps. This means that if you use a good quality cable it can be up to a maximum of 500 meters using AWG24 or similar (CAT5) . Actual length depend on the environment and other parameters. Drops with a maximum length of 24 meters can be taken from this cable and the sum of all drops must not exceed a total of 120 meters. + +![](./images/bus_drops.jpg) + +CAN4VSCP bus with drops and terminations + +## Termination + +The CAN4VSCP bus, as all CAN based networks, should be terminated with a 120 ohms resistor between CANH and CANL at both ends of the cable. + +![](./images/can_bus.png) + + +If you use CAT5 this termination should be placed between the blue - blue/white cables at both end of your bus. + +On the board there is a jumper for an on-board terminator. + + +**Why is terminators required?** + +Terminators are needed to cancel signal echos in the cable. In short you get less noise in the cable if you use them. It is recommended to use them even if at 125 kbit it is possible that your bus will work anyway as CAN is pretty forgiving at this transmission speed. + +## Power the module + +You normally power the module through the RJ45 connector over the CAN4VSCP bus. The voltage range is +9VDC - 28VDC. + +It is possible to power the module on the TTL connector or to take power from this connector if power is available on the CAN4VSCP bus. + +## Best practice + +Even if it is possible to have cable lengths up to 500 meters it is better to stay at shorter distances to have some margins. Here are some guidelines for a reliable set up + + +* Total cable length of 300m, stub cables count double their length in that total. + +* Nodes count as 6m in that total. + +* Never less than 30cm of cable between nodes, nor between a stub connection and a node. + +* No more than 50 nodes connected. + +Following this best practice you will have a setup that will work reliable even in harsh environments. + +# Updating the firmware + +New firmware is released from time to time for all our modules. We expect this to be true also for the Odessa module as it is an active project. The process of updating the firmware of the module is a simple one. Just follow the steps outlined in the [VSCP Works documentation](http://www.vscp.org/docs/vscpworks/doku.php?id=start). + + +## Where is the source for the firmware? + +You can find the latest source for the firmware [here](https///github.com/grodansparadis/can4vscp_kelvin_ntc10k/releases). **You should use the relocated version of the firmware.** + + +## Step by step update process + +Enter the bootloader in the menu + +![](./images/boot1.png) + +Select the interface the device is on + +![](./images/boot2.png) + +![](./images/boot3.png) + +Select the nickname for the device to update firmware on. Make sure this is the correct id. If this is the first time you update a node and only the bootloader is present use **0xfe** + +![](./images/boot4.png) + +On a node with working firmware the bootloader will be discovered automatically. If not select the algorithm (Microchip pic 1) for the device, + + +![](./images/boot5.png) + + +Load the firmware file using "local file". **You should use the relocated version of the firmware.** + + +![](./images/boot6.png) + + +Program the device + + +![](./images/boot7.png) + +![](./images/boot8.png) + + +Due to a bug in VSCP Works restart VSCP works after the bootloader process is ready. + +Your device should now be available with the same id as you entered previously. + +# Configure the module + +You configure a VSCP module by writing content into the modules registers. You can do this manually or with the wizard available in VSCP works. Using the wizard is absolutely the easiest way to accomplish different things. + +## Sensor calibration + +Thermistors are very accurate but non linear devices. Still you may find that Kelvin NTC10K show you the wrong value of the measured temperature. This is because the sensor often need calibration or that registers need to be set to correct values. With calibration you can get very accurate results. For the best result you typically calibrate at three points, in ice + water mix, at 25 degrees Celsius and in boiling water. For most cases one calibration point will do but it all depends on what needs you have. + +There is several registers that affect the reported temperature value. First of all there is the [Beta value registers](registers#%CE%B2_constant_registers). The value in these registers should be the Beta value for the sensor (and the range you use). Alternatively a value you get form calibration as of above. + +The next value is the [voltage calibration value](registers#voltage_calibration_registers). This value is ten thousand times the voltage of the Kelvin NTC board. This is thus normally 50000 (for 5V) which is 0xC350 in hexadecimal. If the voltage of your board is not 5.00 volts you can enter the correct value here. This value seldom need a change. + +The last and most important place are the [sensor calibration registers](registers#sensor_calibration_registers) which can be used to set up a calibration value for each sensor that will be added or subtracted from the read value before it is reported. + +Values are stored as [twos complement numbers](https///www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html) and is as usual 100 times the actual value. + +For example your sensor shows a temperature that is 1.4 degrees to low. 1.4 time 100 is 140 which is 0x008C in hexadecimal. So store 0x00 in the MSB byte and 0x8C in the LSB byte of the calibration value for that sensor. Now 1.4 degrees will be added to the measured value before it is reported and used in calculations. + +Another sample is if your sensor measure a value that is 1.9 degrees to high. We therefore need to subtract 1.9. 100 * -1.9 = -190. This is 0xFF42 as a twos complement number (190 = 0x00BE (0000 0000 1011 1110), Invert which give 0xFF41 (1111 1111 0100 0001), add one which gives 0cxFF42). + +![](./images/calibration.jpg) + +A good method to use to calibrate sensors is to mix ice and water and put the sensor in the mix. This will be zero degrees Celsius. To get another point boil some water and measure the temperature in the middle of the container without touching the walls. + +A good tool for calibration is + +[http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm](http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm) + + +## Zones and sub zones + +Zones and sub zones are used to group things together. Normally you don't address events to a certain receiver in VSCP ([CLASS1.PROTOCOL](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.protocol) being the exception that prove this rule). Instead you report/send things to a group of modules defined by a zone and a sub zone. The sender have no knowledge of how many units this zone/sub zone consist of. Well it does not even care. + +Zone and sub zone for the module can be set in register [0:0 (page:register) and register 0:1](http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#module_zone_registers). But more useful than the module zone sub zone is the zone information for each individual sensor that is available in register [0:74 - 0:85](http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#sensor_zone_information_registers). Here you can specify the zone/sub zone units you think is interested in this event. You can also set them both (or one of them) to 0xff meaning all zones or all sub zones. + +Think of a zone as a house, floor plan or similar and sub-zone as a room or a location. Note again that this is not an address. It's just a way to group functionality together. Or let the MSB bits of the zone be the floor plan, the LSB bits of the zone be the room on that floor plan and the sub zone be a group of functionality for that room. + +It is good to think this through before you start to configure a system with VSCP modules. + +## β values + +In registers [0:38 - 0:49](http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#%CE%B2_constant_registers) you have registers that hold β (beta) values for each sensor. To get correct temperature readings it is important that you enter the correct value here for the sensor you use. You find this information in the data sheet for the sensor. + +## Sensor Control Registers + +In registers [0:2 - 0:7](registers#description_of_control_register_bits) you can configure how sensor data is reported and acted up on. You can set the unit you want temperatures to be reported in. You can enable alarms. You can define that TurnOn/TurnOff events should be sent when levels have been reached or data has been found to be below a certain level. And other things. + +## Temperature measurements + +If you have gone through the steps above you can now read temperature data in [registers 0:8 - 0:19](registers#temperature_registers). The temperature is shown in the selected unit as an integer which is temperature * 100. + +The temperature registers is located in pairs (Most significant byte followed my the least significant byte) and they can be read to get the current temperature for each sensor. The temperature is stored as a 16-bit two complement of a normalized temperature. This means you have to divide the read temperature by 100 to get the temperature value. + +To get the temperature and calculate the temperature for a specific sensor. + + 1. Read MSB register. Read LSB register. + 2. Calculate the 16-bit twos complement as MSB reading * 256 + LSB reading. + 3. If the most significant bit is not set (Equal or less then 32767) this is a positive temperature. Divide by 100 and you have the temperature. + 4. If the most significant bit is set (Greater than 32767) this is a negative temperature. Now invert the result (the bits are inverted; 0 becomes 1, and 1 becomes 0) and add one to the result. Dive by 100 and you have the temperature. + +However usually this is not the way to get temperature readings. Instead you set a report interval for a sensor expressed in seconds in [register 0:20 - 0:25](registers#report_interval_registers) (or set to zero to turn of reporting) and get temperature readings automatically delivered/reported. + +After entering a value here [temperature events](events#temperature_event) will be sent with the configured interval. The receiver of this information can be another module, a routine that writes them to a database or a websocket widget that diagram them live on a screen or on a web page. + +Some samples + +* https://www.youtube.com/embed/37PQomplUVE` + +* https://www.youtube.com/embed/L17d1SSyBc0` + +* https://www.youtube.com/embed/qV41vWt5toE + + +## Alarms + +In the [Low Alarm](registers#low_alarm_registers) and in the [High Alarm](registers#high_alarm_registers) registers you can set the level at which [alarm events](events#alarm_event) are sent. + +An activated low alarm event (activated by setting bit 3 in the [control register](registers#description_of_control_register_bits)) is sent when the temperature is going below the low alarm value. When this happens the low alarm bit in the [standard alarm register](alarms) is set. This bit will only be rested by reading the alarm register. The alarm is considered active as long as the temperature is below the low alarm set point + the hysteresis value set in [register 0:110 - 0:115](registers#sensor_hysteresis_registers). So if temperature moves above this point a new alarm event will be sent again when temperature again is moving below the set point. + +An activated high alarm event (activated by setting bit 4 in the [control register](registers#description_of_control_register_bits)) is sent when the temperature is going above the high alarm value. When this happens the high alarm bit in the [standard alarm register](alarms) is set. This bit will only be rested by reading the alarm register. The alarm is considered active as long as the temperature is above the low alarm set point - the hysteresis value set in [register 0:110 - 0:115](registers#sensor_hysteresis_registers). So if temperature moves below this point a new alarm event will be sent again when temperature again is moving above the set point. + +It is possible to have continuous alarms events sent by setting bit 7 in the [control register](registers#description_of_control_register_bits). An alarm event will be sent every second while the alarm condition persist. + +## Controlling things + +Instead of alarms [CLASS1.CONTROL, Type=5, TurnOn events](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_5_0x05_turnon) and [CLASS1.CONTROL, Type=6, TurnOn](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_6_0x06_turnoff) events can be sent. This functionality is activated by setting **bit 5** in the [control register](http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#description_of_control_register_bits). + +Another bit, bit 6, in the control register decides when the TurnOff/TurnOn events are sent. If set to zero TurnOff is sent when the high point is reached and TurnOn when the low point is reached. Suitable for control of a heating system for example. If the bit is set the TurnOn event is sent at the high set point and the TurnOff is sent on the low set point. Suitable for a cooling system. + +![](./images/limits.png) + +The picture shows a real world example where a Kelvin NTC10K module measures temperature in a fridge which have its compressor controlled by a [Paris relay module](http://www.grodansparadis.com/paris/paris.html). The Paris [decision matrix](http://www.vscp.org/docs/vscpspec/doku.php?id=decision_matrix) is programmed to turn on the compressor when TurnOn events is received from the the zone/subzone programmed into the Kelvin NTC10K module sensor that measure the fridge temperature. + +So here TurnOff events are sent by the Kelvin NTC10K module when the temperature go below -22 degrees Celsius. This event is received by the Paris module and it turn of the relay that controls the fridge compressor. Continuous mode is activated so the TurnOff events are sent until the temperature reach -20 degrees Celsius. A function to protect against events not being delivered. + +When the temperature goes up above -20 degrees Celsius no events will be sent until the temperature go above -17 degrees Celsius. At this point TurnOn events will be sent which are received by the Paris module which turn on the relay that control the Fridge compressor. TurnOn events are sent continuously until the temperature go down to -19 degrees Celsius and again there will be a dead zone until the temperature falls to -22 degrees Celsius. + +# Registers + +All VSCP modules have a set of 8-bit registers defined to export it's functionality in a common way. Some of them (register 128-255) are predefined and the information in them are the same for all VSCP modules. See the [VSCP specification](http://www.vscp.org/docs/vscpspec/doku.php?id=register_abstraction_model) for a description of their content. + +The lower 128 register space is used for module specific registers. It is also here you find registers with which you configure your module. Also registers where you typically can read status information such as measurement data from the module is here. + +The lower register space is further expanded in register pages. + +Below is a description of the registers of the Kelvin NTC10KA module. + +## Page 0 + +### Module zone registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 0 | 0 | The zone this module belongs to. | + | 1 | 0 | The sub zone this module belongs to. | + +### Sensor Control Registers + +Configure which data is reported here and how it is reported. + + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 2 | 0 | Control byte for sensor 0. | + | 3 | 0 | Control byte for sensor 1. | + | 4 | 0 | Control byte for sensor 2. | + | 5 | 0 | Control byte for sensor 3. | + | 6 | 0 | Control byte for sensor 4. | + | 7 | 0 | Control byte for sensor 5. | + +#### Description of control register bits + + | Bit | Description | + | --- | ----------- | + | 0,1 | Temperature unit \\ \\ **00** - Kelvin. \\ **01** - Celsius (default). \\ **10** - Fahrenheit. \\ **11** - Reserved. | + | 2 | Reserved. | + | 3 | Enable low alarm if set to one. | + | 4 | Enable high alarm if set to one. | + | 5 | Send **TurnOn/TurnOff** events instead of Alarm if set to one. | + | 6 | Controls when **TurnOn/TurnOff** events will be sent if activated. **0** - **TurnOn** event is sent when low temperature is reached as set in low temperature alarm register (see [sub:Low-alarm-registers]). **TurnOff** event is sent when high temperature is reached as set in high temperature alarm register (see [sub:High-alarm-registers]). **1** - **TurnOff** event is sent when low temperature is reached as set in low temperature alarm register (see [Registers]([registers)]). **TurnOn** event is sent when high temperature is reached as set in high temperature alarm register (see [sub:High-alarm-registers]). The hysteresis value (see [sub:Sensor-hysteresis-registers]) will effect **TurnOn/TurnOff** events The temperature must go above or below the hysteresis value before a new event will be sent out. | + | 7 | If this bit is set Alarm events will be sent continuous with a one second interval until the alarm register is read or the temperature goes to a non alarm state (with hysteresis taken into account see [[sub:Low-temperature-alarm]). **TurnOn/TurnOff** events will not be affected by a cleared alarm register and will be sent until this bit is cleared or the temperature goes to a non alarm state (with hysteresis taken into account. | + + +### Temperature registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 8 | 0 | Temperature sensor 0 MSB (on board sensor). | + | 9 | 0 | Temperature sensor 0 LSB (on board sensor). | + | 10 | 0 | Temperature sensor 1 MSB. | + | 11 | 0 | Temperature sensor 1 LSB. | + | 12 | 0 | Temperature sensor 2 MSB. | + | 13 | 0 | Temperature sensor 2 LSB. | + | 14 | 0 | Temperature sensor 3 MSB. | + | 15 | 0 | Temperature sensor 3 LSB. | + | 16 | 0 | Temperature sensor 4 MSB. | + | 17 | 0 | Temperature sensor 4 LSB. | + | 18 | 0 | Temperature sensor 5 MSB. | + | 19 | 0 | Temperature sensor 5 LSB. | + +All values stored as a twos complement number as temperature * 100. + +### Report interval registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 20 | 0 | Report interval for sensor 0 in seconds (Set to zero for no report). | + | 21 | 0 | Report interval for sensor 1 in seconds (Set to zero for no report). | + | 22 | 0 | Report interval for sensor 2 in seconds (Set to zero for no report). | + | 23 | 0 | Report interval for sensor 3 in seconds (Set to zero for no report). | + | 24 | 0 | Report interval for sensor 4 in seconds (Set to zero for no report). | + | 25 | 0 | Report interval for sensor 5 in seconds (Set to zero for no report). | + + +### β constant registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 38 | 0 | B constant for sensor 0 MSB. | + | 39 | 0 | B constant for sensor 0 LSB. | + | 40 | 1 | B constant for sensor 1 MSB. | + | 41 | 1 | B constant for sensor 1 LSB. | + | 42 | 2 | B constant for sensor 2 MSB. | + | 43 | 2 | B constant for sensor 2 LSB. | + | 44 | 3 | B constant for sensor 3 MSB. | + | 45 | 3 | B constant for sensor 3 LSB. | + | 46 | 4 | B constant for sensor 4 MSB. | + | 47 | 4 | B constant for sensor 4 LSB. | + | 48 | 5 | B constant for sensor 5 MSB. | + | 49 | 5 | B constant for sensor 5 LSB. | + +You find the B value for a specific NTC temperature sensor in it's datasheet. The correct B value set here is essential for the temperature calculations to be correct. + +You can us [this webpage](http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm) for a 10K thermistor with an unknown beta value. + + +### Low alarm registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 50 | 0 | Low alarm set point for sensor 0 MSB. | + | 51 | 0 | Low alarm set point for sensor 0 LSB. | + | 52 | 0 | Low alarm set point for sensor 1 MSB. | + | 53 | 0 | Low alarm set point for sensor 1 LSB. | + | 54 | 0 | Low alarm set point for sensor 2 MSB. | + | 55 | 0 | Low alarm set point for sensor 2 LSB. | + | 56 | 0 | Low alarm set point for sensor 3 MSB. | + | 57 | 0 | Low alarm set point for sensor 3 LSB. | + | 58 | 0 | Low alarm set point for sensor 4 MSB. | + | 59 | 0 | Low alarm set point for sensor 4 LSB. | + | 60 | 0 | Low alarm set point for sensor 5 MSB. | + | 61 | 0 | Low alarm set point for sensor 5 LSB. | + +Writing any of these registers will reset high/low alarm conditions for that sensor. + +The value is stored as a twos complement number representing the temperature. **Note note that the value is not *100**. + +The hysteresis value affects the low alarm after a low alarm condition has been set. The temperature must increase with *hysteresis* degrees before the low alarm condition is resetted. + + +### High alarm registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 62 | 0 | High alarm set point for sensor 0 MSB. | + | 63 | 0 | High alarm set point for sensor 0 LSB. | + | 64 | 0 | High alarm set point for sensor 1 MSB. | + | 65 | 0 | High alarm set point for sensor 1 LSB. | + | 66 | 0 | High alarm set point for sensor 2 MSB. | + | 67 | 0 | High alarm set point for sensor 2 LSB. | + | 68 | 0 | High alarm set point for sensor 3 MSB. | + | 69 | 0 | High alarm set point for sensor 3 LSB. | + | 70 | 0 | High alarm set point for sensor 4 MSB. | + | 71 | 0 | High alarm set point for sensor 4 LSB. | + | 72 | 0 | High alarm set point for sensor 5 MSB. | + | 73 | 0 | High alarm set point for sensor 5 LSB. | + +Writing any of these registers will reset high/low alarm conditions for that sensor. + +The value is stored as a twos complement number representing the temperature. **Note note that the value is not *100**. + +The hysteresis value affects the high alarm after a high alarm condition has been set. The temperature must decrease with *hysteresis* degrees before the high alarm condition is resetted. + +### Sensor zone information registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 74 | 0 | Zone for sensor 0 alarms. | + | 75 | 0 | Sub zone for sensor 0 alarms. | + | 76 | 0 | Zone for sensor 1 alarms. | + | 77 | 0 | Sub zone for sensor 1 alarms. | + | 78 | 0 | Zone for sensor 2 alarms. | + | 79 | 0 | Sub zone for sensor 2 alarms. | + | 80 | 0 | Zone for sensor 3 alarms. | + | 81 | 0 | Sub zone for sensor 3 alarms. | + | 82 | 0 | Zone for sensor 4 alarms. | + | 83 | 0 | Sub zone for sensor 4 alarms. | + | 84 | 0 | Zone for sensor 5 alarms. | + | 85 | 0 | Sub zone for sensor 5 alarms. | + +### Sensor absolute low temperature registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 86 | 0 | Absolute low for sensor 0 MSB (Write to reset). | + | 87 | 0 | Absolute low for sensor 0 LSB (Write to reset). | + | 88 | 0 | Absolute low for sensor 1 MSB (Write to reset). | + | 89 | 0 | Absolute low for sensor 1 LSB (Write to reset). | + | 90 | 0 | Absolute low for sensor 2 MSB (Write to reset). | + | 91 | 0 | Absolute low for sensor 2 LSB (Write to reset). | + | 92 | 0 | Absolute low for sensor 3 MSB (Write to reset). | + | 93 | 0 | Absolute low for sensor 3 LSB (Write to reset). | + | 94 | 0 | Absolute low for sensor 4 MSB (Write to reset). | + | 95 | 0 | Absolute low for sensor 4 LSB (Write to reset). | + | 96 | 0 | Absolute low for sensor 5 MSB (Write to reset). | + | 97 | 0 | Absolute low for sensor 5 LSB (Write to reset). | + +The value is stored as a twos complement number as temperature * 100. Writing any of the registers will rest the value. + +### Sensor absolute high temperature registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 98 | 0 | Absolute high for sensor 0 MSB (Write to reset). | + | 99 | 0 | Absolute high for sensor 0 LSB (Write to reset). | + | 100 | 0 | Absolute high for sensor 1 MSB (Write to reset). | + | 101 | 0 | Absolute high for sensor 1 LSB (Write to reset). | + | 102 | 0 | Absolute high for sensor 2 MSB (Write to reset). | + | 103 | 0 | Absolute high for sensor 2 LSB (Write to reset). | + | 104 | 0 | Absolute high for sensor 3 MSB (Write to reset). | + | 105 | 0 | Absolute high for sensor 3 LSB (Write to reset). | + | 106 | 0 | Absolute high for sensor 4 MSB (Write to reset). | + | 107 | 0 | Absolute high for sensor 4 LSB (Write to reset). | + | 108 | 0 | Absolute high for sensor 5 MSB (Write to reset). | + | 109 | 0 | Absolute high for sensor 5 LSB (Write to reset). | + +The value is stored as a twos complement number as temperature * 100. Writing any of the registers will rest the value. + +### Sensor hysteresis registers + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 110 | 0 | Hysteresis in degrees Celsius for sensor 0 (default is 5 degrees). | + | 111 | 0 | Hysteresis in degrees Celsius for sensor 1 (default is 5 degrees). | + | 112 | 0 | Hysteresis in degrees Celsius for sensor 2 (default is 5 degrees). | + | 113 | 0 | Hysteresis in degrees Celsius for sensor 3 (default is 5 degrees). | + | 114 | 0 | Hysteresis in degrees Celsius for sensor 4 (default is 5 degrees). | + | 115 | 0 | Hysteresis in degrees Celsius for sensor 5 (default is 5 degrees). | + +The value here will affect the high and low alarms +### Voltage calibration registers + +The Voltage used to calculate the temperature for a sensor have effect on the error. The voltage is theoretically 5V but will in reality be something else but still close to 5V. These register can be used to set a calibrated voltage obtained from actual measurements. The value stored in the two registers is the voltage times 10000 so 5V for example should be stored as 50000. + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 118 | 0 | MSB of Voltage (Default is 0xC3). | + | 119 | 0 | MSB of Voltage (Default is 0x50). | + + +## Page 1 + + +### Raw A/D values + +Raw A/D values from the temperature sensor network can be read if a user wants to. This can be useful for special nonstandard setups. The A/D converter is a 10-bit converter so the value can be 0-1023 and is stored MSB first in the registers (not in the converter) as all values are stored in VSCP. The registers can only be read, a write is ignored. + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 72 | 1 | MSB of A/D converter value for sensor 0. | + | 73 | 1 | LSB of A/D converter value for sensor 0. | + | 74 | 1 | MSB of A/D converter value for sensor 1. | + | 75 | 1 | LSB of A/D converter value for sensor 1. | + | 76 | 1 | MSB of A/D converter value for sensor 2. | + | 77 | 1 | LSB of A/D converter value for sensor 2. | + | 78 | 1 | MSB of A/D converter value for sensor 3. | + | 79 | 1 | LSB of A/D converter value for sensor 3. | + | 80 | 1 | MSB of A/D converter value for sensor 4. | + | 81 | 1 | LSB of A/D converter value for sensor 4. | + | 82 | 1 | MSB of A/D converter value for sensor 5. | + | 83 | 1 | LSB of A/D converter value for sensor 5. | + +### Sensor calibration registers + +The value in the calibration register is added to the measured sensor value before it's reported. The calibration value is stored as a two's complement temperature * 100 to allow for both positive and negative numbers. So 24.23 degrees is stored as 2423 and so on. This means that 100 will add one degree to the measured value while 65436 (0xFF9c) is -100 and will subtract one degree form the measured value. If you are unsecyre on how two complement umbers work there is an introduction here https://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html + + | Register | Page | Description | + | -------- | ---- | ----------- | + | 84 | 1 | MSB of calibration value for sensor 0. | + | 85 | 1 | LSB of calibration value for sensor 0. | + | 86 | 1 | MSB of calibration value for sensor 1. | + | 87 | 1 | LSB of calibration value for sensor 1. | + | 88 | 1 | MSB of calibration value for sensor 2. | + | 89 | 1 | LSB of calibration value for sensor 2. | + | 90 | 1 | MSB of calibration value for sensor 3. | + | 91 | 1 | LSB of calibration value for sensor 3. | + | 92 | 1 | MSB of calibration value for sensor 4. | + | 93 | 1 | LSB of calibration value for sensor 4. | + | 94 | 1 | MSB of calibration value for sensor 5. | + | 95 | 1 | LSB of calibration value for sensor 5. | + +# Alarms + + | Bit | Description | + | --- | ----------- | + | 0 | Low Alarm from one or more sensor. | + | 1 | High Alarm from one or more sensor. | + | 2 | Reserved. | + | 3 | Reserved | + | 4 | Reserved | + | 5 | Reserved | + | 6 | Reserved | + | 7 | Reserved | + +Remember that alarm bits are cleared when read. So read the register to clear alarm bits. Alarm bits will be set until this register is cleared even if the actual alarm condition is not active anymore. + +# Decision Matrix + +This module have no decision matrix. + +# Events + +Here the events sent by the module is described. + +## Temperature Event + + | Event | Description | + | ----- | ----------- | + | [CLASS1.MEASUREMENT (10) Type=6, Temperature](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.measurement#type_6_0x06_temperature) | If enabled this event is sent periodically for each sensor. The temperature is reported as a normalized integer value by this event. The event frequency is set in register 20-25 (default is one event per 30 seconds) and must be set to a non zero value for it to be sent.\\ \\ Temperature can be reported in one of three units. Kelvin, Celsius (default) or Fahrenheit as set in register 2-7. \\ \\ __**Data**__\\ **Byte 0** - Data coding byte. See description below.\\ **Byte 1** - Always 130 (0x82). Decimal point should be shifted two steps to the left = divide with hundred.\\ **Byte 2** - MSB of normalized integer. Two complement number.\\ **Byte 3** - LSB of normalized integer. Two complement number.\\ \\ | + +The data coding byte is the measurement data coding format described in [the VSCP specification](http://www.vscp.org/docs/vscpspec/doku.php?id=data_coding). + +The normalized integer is stored as a two complement 16-bit integer. To convert + +1. Calculate the 16-bit twos complement as MSB byte * 256 + LSB byte. + +2. If the most significant bit is not set (Equal or less then 32767) this is a positive temperature. Divide by 100 and you have the temperature. + +3. If the most significant bit is set (Greater than 32767) this is a negative temperature. Now invert the result (the bits are inverted; 0 becomes 1, and 1 becomes 0) and add one to the result. Dive by 100 and you have the temperature. + +### Example: A negative temperature in Celsius from sensor 1 + +The data part of the event will be + + | Byte | Description | + | ---- | ----------- | + | Byte 0 | 130 (0x82) | + | Byte 1 | 2 (0x02) | + | Byte 2 | 255 (0xF0) | + | Byte 3 | 216 (0x60) | + + 1. **Byte 0**: Normalized integer, Celsius, Sensor 1 + 2. **Byte 1**: Decimal point should be shifted two steps to the left. + 3. **Byte 2/3**: Bit 16 is a one meaning it's a negative number. Temperature is a two complement number. 0xF060 = 0b1111000001100000. Invert which give 0b0000111110011111 add one which give 0b0000111110100000 = 4000. Divide by 100 gives 40.00 The read temperature is -40.00 ºC. + +### Example: A positive temperature in Celsius from sensor 1 + +The data part of the event will be + + | Byte | Description | + | ---- | ----------- | + | Byte 0 | 130 (0x82) | + | Byte 1 | 2 (0x02) | + | Byte 2 | 46 (0x2E) | + | Byte 3 | 224 (0xE0) | + + 1. **Byte 0**: Normalized integer, Celsius, Sensor 1 + 2. **Byte 1**: Decimal point should be shifted two steps to the left. + 3. **Byte 2/3**: Bit 16 is zero meaning it's a positive number. 0x2EE0 = 12000. Divide by 100 gives 120.00. The temperature is 120.00 ºC. + +### Example: A negative temperature in Fahrenheit from sensor 5 + +The data part of the event will be + + | Byte | Description | + | ---- | ----------- | + | Byte 0 | 249 (0xF9) | + | Byte 1 | 2 (0x02) | + | Byte 2 | 255 (0xFF) | + | Byte 3 | 118 (0x76) | + + 1. **Byte 0**: Normalized integer, Fahrenheit, Sensor 5 + 2. **Byte 1**: Decimal point should be shifted two steps to the left. + 3. **Byte 2/3**: Bit 16 is a one meaning it's a negative number. Temperature is a two complement number. 0xFF76 = 0b1111111101110110. Invert which give 0b0000000010001001 add one which give 0b0000000010001010 = 138. Divide by 100 gives 1.38 The read temperature is -1.38 ºF. + + + +### Data coding byte for Kelvin + + | Bits | Description | + | ---- | ----------- | + | 5,6,7 | Always set to 4 (0b100) - Normalized integer format. | + | 3,4 | __**Unit**:__\\ **0 (0b00)** - Kelvin.\\ **1 (0b01)** – Celsius.\\ **2 (0b10)** – Fahrenheit. | + | 0,1,2 | __**Sensor Index**:__\\ **0 (0b000)** - Sensor 0.\\ **1 (0b001)** - Sensor 1.\\ **2 (0b010)** - Sensor 2.\\ **3 (0b011)** - Sensor 3.\\ **4 (0b100)** - Sensor 4.\\ **5 (0b101)** - Sensor 5. | + +To help to interpret data the three tables below list the datacoding bytes for Kelvin, Celsius and Fahrenheit temperature presentation. + +#### Kelvin data coding table + + | Sensor | Value for data coding byte | + | ------ | -------------------------- | + | Sensor 0 | 129 (0x81) | + | Sensor 1 | 130(0x82) | + | Sensor 2 | 131(0x83) | + | Sensor 3 | 132(0x84) | + | Sensor 4 | 133(0x85) | + | Sensor 5 | 134(0x86) | + + +#### Celsius data coding table + + | Sensor | Value for data coding byte | + | ------ | -------------------------- | + | Sensor 0 | 136(0x88) | + | Sensor 1 | 137(0x89) | + | Sensor 2 | 138(0x8A) | + | Sensor 3 | 139(0x8B) | + | Sensor 4 | 140(0x8C) | + | Sensor 5 | 141(0x8D) | + + +#### Fahrenheit Vdata coding table + + | Sensor | Value for data coding byte | + | ------ | -------------------------- | + | Sensor 0 | 244 (0xF4) | + | Sensor 1 | 245 (0xF5) | + | Sensor 2 | 246 (0xF6) | + | Sensor 3 | 247 (0xF7) | + | Sensor 4 | 248 (0xF8) | + | Sensor 5 | 249 (0xF9) | + + +## Alarm Event + +If enabled the event is sent when a temperature sensor goes below a low alarm set point (see [Low-alarm-registers](#registers)) or above a high alarm set point (see [High-alarm-registers](#registers)). The hysteresis registers is used so that after an alarm event has been sent a new alarm event is not sent until the temperature goes below/above the value set in the set point plus(low)/minus(high) signed content of hysteresis register. + +A read of the alarm register will reset the alarm status and alarm events will not be sent out again until the the temperature changed with the hysteresis amount. + + | Event | Description | + | ----- | ----------- | + | [CLASS1.ALARM, Type=2, Alarm occurred](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.alarm#type_2_0x02_alarm_occurred) | __**Data**__\\ **Byte 0** - Index. Index is 0 for Sensor 0. 1 for Sensor 1, 2 for Sensor 2. 3 for Sensor 3. 4 for Sensor 4. 5 for Sensor 5. \\ **Byte 1** - Zone.\\ **Byte 2** - Sub zone. | + +Zone and sub-zone are the modules settings for the sensor generating the alarm. See [register 74-85](#registers) + +## TurnOn/TurnOff Event + +If enabled, the event [CLASS1.CONTROL, Type=5, TurnOn](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_5_0x05_turnon) or [CLASS1.CONTROL, Type=6, TurnOff](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_6_0x06_turnoff) (Bit 5 in control register must be set (see [Control-registers](registers#sensor_control_ registers)])) is sent when the temperature goes below or above the low(see [Low-alarm-registers](registers#low_ alarm_registers)/high(see [High-alarm-registers](registers#high_ alarm_registers) alarm set points. Settings in the control register bit 6 (see [sub:Control-registers]) decides which of the **TurnOn/TurnOff** event that is sent. The hysteresis setting (see [sub:Sensor-hysteresis-registers]) tells how much a temperature must raise or fall below the alarm set point before a new event will be sent. + + | Event | Description | + | ----- | ----------- | + | [CLASS1.CONTROL, Type=5, TurnOn](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_5_0x05_turnon) | __**Data**:__\\ **0** Index,\\ **1** Zone.\\ **2** Sub zone. | + + | Event | Description | + | ----- | ----------- | + | [CLASS1.CONTROL, Type=6, TurnOff](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_6_0x06_turnoff) | __**Data**:__\\ **0** Index,\\ **1** Zone.\\ **2** Sub zone. | + +__**Index**__ is 0 for Sensor 0, 1 for Sensor 1, 2 for Sensor 2. 3 for Sensor 3. 4 for Sensor 4. 5 for Sensor 5. + +__**Zone**__ information is fetched from sensor zone register (see [sensor zone information registers](http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#sensor_zone_information_registers)). + +__**Sub zone**__ information is fetched from sensor sub-zone register (see [sensor zone information registers](http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#sensor_zone_information_registers)). + +## Sync. Event (incoming) + +If a SYNC event is received by the module it will check the zone/subzone parameters of the event and send out [temperature measurement event(s)](http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=events#temperature_event) for all sensors that match. This can be a handy feature to use of one want synchronized data from several sources. + + + | Event | Description | + | ----- | ----------- | + | [CLASS1.CONTROL, Type=26, Sync](http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_26_0x1a_sync) | __**Data**:__\\ **0** Index,\\ **1** Zone.\\ **2** Sub zone. | + + # Recipes + + +* **The story about an old Fridge**: [http://grodansparadis.com/wordpress/?p=1384](https://www.grodansparadis.com/wordpress/?p=1384) + +# faq - Frequently Asked Questions + +*Not many of those yet!* + + + + + diff --git a/manual/_coverpage.md b/manual/_coverpage.md new file mode 100644 index 0000000..2cab624 --- /dev/null +++ b/manual/_coverpage.md @@ -0,0 +1,12 @@ + + +![VSCP logo](./images/logo_400.png) + +# CAN4VSCP Kelvin NTC10K module + +Scroll down to view docs. + +[Homepage](https://www.vscp.org) +[Docs](https://www.vscp.org/#documentation) +[Downloads](https://www.vscp.org/#download) +[Get Started](./README) diff --git a/manual/_sidebar.md b/manual/_sidebar.md new file mode 100644 index 0000000..9afb383 --- /dev/null +++ b/manual/_sidebar.md @@ -0,0 +1,3 @@ +# test + +[About this document](./README) \ No newline at end of file diff --git a/manual/abstractions.txt b/manual/abstractions.txt new file mode 100644 index 0000000..aca700e --- /dev/null +++ b/manual/abstractions.txt @@ -0,0 +1,93 @@ +====== Abstractions ====== + +A VSCP unit is describing it's configuration to the world with a register model where each register is eight bit in width. This is often inconvenient for a human user who is used to higher level types and this is what //abstractions// are there for. They sit above registers and specify types as strings, floats, integers and other such higher level types. + +===== Temperatures ===== + +^ Name ^ Type ^ Description ^ +| temp0 | int32_t | Current temperature times 100 for sensor 0. | +| temp0 | int32_t | Current temperature times 100 for sensor 0. | +| temp0 | int32_t | Current temperature times 100 for sensor 0. | +| temp0 | int32_t | Current temperature times 100 for sensor 0. | +| temp0 | int32_t | Current temperature times 100 for sensor 0. | +| temp0 | int32_t | Current temperature times 100 for sensor 0. | + + +===== B Constant ===== + +^ Name ^ Type ^ Description ^ +| bconst0 | uint32_t | NTC Thermistor B constant for sensor 0. | +| bconst1 | uint32_t | NTC Thermistor B constant for sensor 1. | +| bconst2 | uint32_t | NTC Thermistor B constant for sensor 2. | +| bconst3 | uint32_t | NTC Thermistor B constant for sensor 3. | +| bconst4 | uint32_t | NTC Thermistor B constant for sensor 4. | +| bconst5 | uint32_t | NTC Thermistor B constant for sensor 5. | + + +===== Low alarm ===== + +^ Name ^ Type ^ Description ^ +| lowalarm0 | int32_t | Low alarm temperature times 100 for sensor 0. | +| lowalarm1 | int32_t | Low alarm temperature times 100 for sensor 1. | +| lowalarm2 | int32_t | Low alarm temperature times 100 for sensor 2. | +| lowalarm3 | int32_t | Low alarm temperature times 100 for sensor 3. | +| lowalarm4 | int32_t | Low alarm temperature times 100 for sensor 4. | +| lowalarm5 | int32_t | Low alarm temperature times 100 for sensor 5. | + + +===== High alarm ===== + +^ Name ^ Type ^ Description ^ +| highalarm0 | int32_t | High alarm temperature times 100 for sensor 0. | +| highalarm1 | int32_t | High alarm temperature times 100 for sensor 1. | +| highalarm2 | int32_t | High alarm temperature times 100 for sensor 2. | +| highalarm3 | int32_t | High alarm temperature times 100 for sensor 3. | +| highalarm4 | int32_t | High alarm temperature times 100 for sensor 4. | +| highalarm5 | int32_t | High alarm temperature times 100 for sensor 5. | + + +===== Absolute Low temperature ===== + +^ Name ^ Type ^ Description ^ +| abslow0 | int32_t | Absolute low temperature times 100 for sensor 0. | +| abslow1 | int32_t | Absolute Low temperature times 100 for sensor 1. | +| abslow2 | int32_t | Absolute Low temperature times 100 for sensor 2. | +| abslow3 | int32_t | Absolute Low temperature times 100 for sensor 3. | +| abslow4 | int32_t | Absolute Low temperature times 100 for sensor 4. | +| abslow5 | int32_t | Absolute Low temperature times 100 for sensor 5. | + + +===== Absolute high temperature ===== + +^ Name ^ Type ^ Description ^ +| abshigh0 | int32_t | Absolute high temperature times 100 for sensor 0. | +| abshigh1 | int32_t | Absolute high temperature times 100 for sensor 1. | +| abshigh2 | int32_t | Absolute high temperature times 100 for sensor 2. | +| abshigh3 | int32_t | Absolute high temperature times 100 for sensor 3. | +| abshigh4 | int32_t | Absolute high temperature times 100 for sensor 4. | +| abshigh5 | int32_t | Absolute high temperature times 100 for sensor 5. | + + +===== Calibration values ===== + +^ Name ^ Type ^ Description ^ +| calibration0 | int32_t | Calibration value times 100 for sensor 0. | +| calibration1 | int32_t | Calibration value times 100 for sensor 1. | +| calibration2 | int32_t | Calibration value times 100 for sensor 2. | +| calibration3 | int32_t | Calibration value times 100 for sensor 3. | +| calibration4 | int32_t | Calibration value times 100 for sensor 4. | +| calibration5 | int32_t | Calibration value times 100 for sensor 5. | + + +===== Raw ADC values ===== + +Raw A/D values for each sensor. + +^ Name ^ Type ^ Description ^ +| rawadc0 | uint32_t | Raw A/D value for sensor 0. | +| rawadc0 | uint32_t | Raw A/D value for sensor 1. | +| rawadc0 | uint32_t | Raw A/D value for sensor 2. | +| rawadc0 | uint32_t | Raw A/D value for sensor 3. | +| rawadc0 | uint32_t | Raw A/D value for sensor 4. | +| rawadc0 | uint32_t | Raw A/D value for sensor 5. | + diff --git a/manual/alarms.txt b/manual/alarms.txt new file mode 100644 index 0000000..c388eda --- /dev/null +++ b/manual/alarms.txt @@ -0,0 +1,25 @@ +====== Alarms ====== + +^ Bit ^Description ^ +| 0 | Low Alarm from one or more sensor. | +| 1 | High Alarm from one or more sensor. | +| 2 | Reserved. | +| 3 | Reserved | +| 4 | Reserved | +| 5 | Reserved | +| 6 | Reserved | +| 7 | Reserved | + +Remember that alarm bits are cleared when read. So read the register to clear alarm bits. Alarm bits will be set until this register is cleared even if the actual alarm condition is not active anymore. + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/can4vscp_cabling.txt b/manual/can4vscp_cabling.txt new file mode 100644 index 0000000..97313b3 --- /dev/null +++ b/manual/can4vscp_cabling.txt @@ -0,0 +1,54 @@ +====== CAN4VSCP Cabling ====== + +===== Cable length ===== + +CAN4VSCP always communicate with 125kbps. This means that if you use a good quality cable it can be up to a maximum of 500 meters using AWG24AWG24 or similar (CAT5) . Actual length depend on the environment and other parameters. Drops with a maximum length of 24 meters can be taken from this cable and the sum of all drops must not exceed a total of 120 meters. + +{{ :bus_drops.jpg?700 |}} + +CAN4VSCP bus with drops and terminations + +===== Termination ===== + +The CAN4VSCP bus, as all CAN based networks, should be terminated with a 120 ohms resistor between CANH and CANL at both ends of the cable. + +{{ :can_bus.png?600 |}} + + +If you use CAT5 this termination should be placed between the blue - blue/white cables at both end of your bus. + +On the board there is a jumper for an on-board terminator. + +{{ ::prototype2_terminator.png?600 |}} + +**Why is terminators required?** + +Terminators are needed to cancel signal echos in the cable. In short you get less noise in the cable if you use them. It is recommended to use them even if at 125 kbit it is possible that your bus will work anyway as CAN is pretty forgiving at this transmission speed. + +===== Power the module ===== + +You normally power the module through the RJ45 connector over the CAN4VSCP bus. The voltage range is +9VDC - 28VDC. + +It is possible to power the module on the TTL connector or to take power from this connector if power is available on the CAN4VSCP bus. + +===== Best practice ===== + +Even if it is possible to have cable lengths up to 500 meters it is better to stay at shorter distances to have some margins. Here are some guidelines for a reliable set up + + * Total cable length of 300m, stub cables count double their length in that total. + * Nodes count as 6m in that total. + * Never less than 30cm of cable between nodes, nor between a stub connection and a node. + * No more than 50 nodes connected. + +Following this best practice you will have a setup that will work reliable even in harsh environments. + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/change_log_1.txt b/manual/change_log_1.txt new file mode 100644 index 0000000..89630ea --- /dev/null +++ b/manual/change_log_1.txt @@ -0,0 +1,19 @@ +====== Change Log for Kelvin NTC10K ====== + +The changelog for firmware can be read [[https://github.com/grodansparadis/can4vscp_kelvin_ntc10k/blob/master/HISTORY.txt|here]].\\ + +===== Documentation changes ====== + +2016-02-04 AKHE - Page 1 register was not described correctly. Fixed. +2015-06-16 AKHE - Started this change log. + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/configure.txt b/manual/configure.txt new file mode 100644 index 0000000..d3a8dd1 --- /dev/null +++ b/manual/configure.txt @@ -0,0 +1,113 @@ +====== Configure the module ====== + +You configure a VSCP module by writing content into the modules registers. You can do this manually or with the wizard available in VSCP works. Using the wizard is absolutely the easiest way to accomplish different things. + +===== Sensor calibration ===== + +Thermistors are very accurate but non linear devices. Still you may find that Kelvin NTC10K show you the wrong value of the measured temperature. This is because the sensor often need calibration or that registers need to be set to correct values. With calibration you can get very accurate results. For the best result you typically calibrate at three points, in ice + water mix, at 25 degrees Celsius and in boiling water. For most cases one calibration point will do but it all depends on what needs you have. + +There is several registers that affect the reported temperature value. First of all there is the [[registers#%CE%B2_constant_registers|Beta value registers]]. The value in these registers should be the Beta value for the sensor (and the range you use). Alternatively a value you get form calibration as of above. + +The next value is the [[registers#voltage_calibration_registers|voltage calibration value]]. This value is ten thousand times the voltage of the Kelvin NTC board. This is thus normally 50000 (for 5V) which is 0xC350 in hexadecimal. If the voltage of your board is not 5.00 volts you can enter the correct value here. This value seldom need a change. + +The last and most important place are the [[registers#sensor_calibration_registers|sensor calibration registers]] which can be used to set up a calibration value for each sensor that will be added or subtracted from the read value before it is reported. + +Values are stored as [[https://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html|twos complement numbers]] and is as usual 100 times the actual value. + +For example your sensor shows a temperature that is 1.4 degrees to low. 1.4 time 100 is 140 which is 0x008C in hexadecimal. So store 0x00 in the MSB byte and 0x8C in the LSB byte of the calibration value for that sensor. Now 1.4 degrees will be added to the measured value before it is reported and used in calculations. + +Another sample is if your sensor measure a value that is 1.9 degrees to high. We therefore need to subtract 1.9. 100 * -1.9 = -190. This is 0xFF42 as a twos complement number (190 = 0x00BE (0000 0000 1011 1110), Invert which give 0xFF41 (1111 1111 0100 0001), add one which gives 0cxFF42). + +{{:calibration.jpg?700|}} + +A good method to use to calibrate sensors is to mix ice and water and put the sensor in the mix. This will be zero degrees Celsius. To get another point boil some water and measure the temperature in the middle of the container without touching the walls. + +A good tool for calibration is \\ [[http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm]] + + + + +===== Zones and sub zones ===== + +Zones and sub zones are used to group things together. Normally you don't address events to a certain receiver in VSCP ([[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.protocol|CLASS1.PROTOCOL]] being the exception that prove this rule). Instead you report/send things to a group of modules defined by a zone and a sub zone. The sender have no knowledge of how many units this zone/sub zone consist of. Well it does not even care. + +Zone and sub zone for the module can be set in register [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#module_zone_registers|0:0 (page:register) and register 0:1]]. But more useful than the module zone sub zone is the zone information for each individual sensor that is available in register [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#sensor_zone_information_registers|0:74 - 0:85]]. Here you can specify the zone/sub zone units you think is interested in this event. You can also set them both (or one of them) to 0xff meaning all zones or all sub zones. + +Think of a zone as a house, floor plan or similar and sub-zone as a room or a location. Note again that this is not an address. It's just a way to group functionality together. Or let the MSB bits of the zone be the floor plan, the LSB bits of the zone be the room on that floor plan and the sub zone be a group of functionality for that room. + +It is good to think this through before you start to configure a system with VSCP modules. + +===== β values ===== + +In registers [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#%CE%B2_constant_registers|0:38 - 0:49]] you have registers that hold β (beta) values for each sensor. To get correct temperature readings it is important that you enter the correct value here for the sensor you use. You find this information in the data sheet for the sensor. + +===== Sensor Control Registers ===== +In registers [[registers#description_of_control_register_bits|0:2 - 0:7]] you can configure how sensor data is reported and acted up on. You can set the unit you want temperatures to be reported in. You can enable alarms. You can define that TurnOn/TurnOff events should be sent when levels have been reached or data has been found to be below a certain level. And other things. + +===== Temperature measurements ===== +If you have gone through the steps above you can now read temperature data in [[registers#temperature_registers|registers 0:8 - 0:19]]. The temperature is shown in the selected unit as an integer which is temperature * 100. + +The temperature registers is located in pairs (Most significant byte followed my the least significant byte) and they can be read to get the current temperature for each sensor. The temperature is stored as a 16-bit two complement of a normalized temperature. This means you have to divide the read temperature by 100 to get the temperature value. + +To get the temperature and calculate the temperature for a specific sensor. + + - Read MSB register. Read LSB register. + - Calculate the 16-bit twos complement as MSB reading * 256 + LSB reading. + - If the most significant bit is not set (Equal or less then 32767) this is a positive temperature. Divide by 100 and you have the temperature. + - If the most significant bit is set (Greater than 32767) this is a negative temperature. Now invert the result (the bits are inverted; 0 becomes 1, and 1 becomes 0) and add one to the result. Dive by 100 and you have the temperature. + +However usually this is not the way to get temperature readings. Instead you set a report interval for a sensor expressed in seconds in [[registers#report_interval_registers|register 0:20 - 0:25]] (or set to zero to turn of reporting) and get temperature readings automatically delivered/reported. + +After entering a value here [[events#temperature_event|temperature events]] will be sent with the configured interval. The receiver of this information can be another module, a routine that writes them to a database or a websocket widget that diagram them live on a screen or on a web page. + +Some samples + + + + + + + + + + + + + + +===== Alarms ===== + +In the [[registers#low_alarm_registers|Low Alarm]] and in the [[registers#high_alarm_registers|High Alarm]] registers you can set the level at which [[events#alarm_event|alarm events]] are sent. + +An activated low alarm event (activated by setting bit 3 in the [[registers#description_of_control_register_bits|control register]]) is sent when the temperature is going below the low alarm value. When this happens the low alarm bit in the [[alarms|standard alarm register]] is set. This bit will only be rested by reading the alarm register. The alarm is considered active as long as the temperature is below the low alarm set point + the hysteresis value set in [[registers#sensor_hysteresis_registers|register 0:110 - 0:115]]. So if temperature moves above this point a new alarm event will be sent again when temperature again is moving below the set point. + +An activated high alarm event (activated by setting bit 4 in the [[registers#description_of_control_register_bits|control register]]) is sent when the temperature is going above the high alarm value. When this happens the high alarm bit in the [[alarms|standard alarm register]] is set. This bit will only be rested by reading the alarm register. The alarm is considered active as long as the temperature is above the low alarm set point - the hysteresis value set in [[registers#sensor_hysteresis_registers|register 0:110 - 0:115]]. So if temperature moves below this point a new alarm event will be sent again when temperature again is moving above the set point. + +It is possible to have continuous alarms events sent by setting bit 7 in the [[registers#description_of_control_register_bits|control register]]. An alarm event will be sent every second while the alarm condition persist. + +===== Controlling things ===== + +Instead of alarms [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_5_0x05_turnon|CLASS1.CONTROL, Type=5, TurnOn events]] and [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_6_0x06_turnoff|CLASS1.CONTROL, Type=6, TurnOn]] events can be sent. This functionality is activated by setting **bit 5** in the [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#description_of_control_register_bits|control register]]. + +Another bit, bit 6, in the control register decides when the TurnOff/TurnOn events are sent. If set to zero TurnOff is sent when the high point is reached and TurnOn when the low point is reached. Suitable for control of a heating system for example. If the bit is set the TurnOn event is sent at the high set point and the TurnOff is sent on the low set point. Suitable for a cooling system. + +{{:limits.png?400|}} + +The picture shows a real world example where a Kelvin NTC10K module measures temperature in a fridge which have its compressor controlled by a [[http://www.grodansparadis.com/paris/paris.html|Paris relay module]]. The Paris [[http://www.vscp.org/docs/vscpspec/doku.php?id=decision_matrix|decision matrix]] is programmed to turn on the compressor when TurnOn events is received from the the zone/subzone programmed into the Kelvin NTC10K module sensor that measure the fridge temperature. + +So here TurnOff events are sent by the Kelvin NTC10K module when the temperature go below -22 degrees Celsius. This event is received by the Paris module and it turn of the relay that controls the fridge compressor. Continuous mode is activated so the TurnOff events are sent until the temperature reach -20 degrees Celsius. A function to protect against events not being delivered. + +When the temperature goes up above -20 degrees Celsius no events will be sent until the temperature go above -17 degrees Celsius. At this point TurnOn events will be sent which are received by the Paris module which turn on the relay that control the Fridge compressor. TurnOn events are sent continuously until the temperature go down to -19 degrees Celsius and again there will be a dead zone until the temperature falls to -22 degrees Celsius. + + + + +\\ +---- +{{ :grodan_logo.png?100 |}} +\\ +
+**Paradise of the Frog AB** Brattbergavägen 17 820 50 LOS SWEDEN\\ +**email:** [[info@grodansparadis.com]] **phone:** +46 (0)8 40011835 \\ +**web:**[[http://www.grodansparadis.com]] \\ +
\ No newline at end of file diff --git a/manual/data_coding.txt b/manual/data_coding.txt new file mode 100644 index 0000000..d8402a6 --- /dev/null +++ b/manual/data_coding.txt @@ -0,0 +1 @@ +====== Data coding ====== diff --git a/manual/decision_matrix.txt b/manual/decision_matrix.txt new file mode 100644 index 0000000..63f08ee --- /dev/null +++ b/manual/decision_matrix.txt @@ -0,0 +1,3 @@ +====== Decision Matrix ====== + + diff --git a/manual/decisionmatrix.txt b/manual/decisionmatrix.txt new file mode 100644 index 0000000..1f8547b --- /dev/null +++ b/manual/decisionmatrix.txt @@ -0,0 +1,15 @@ +====== Decision Matrix ====== + +This module does not have a decision matrix + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/events.txt b/manual/events.txt new file mode 100644 index 0000000..ed07d4c --- /dev/null +++ b/manual/events.txt @@ -0,0 +1,149 @@ +====== Events ====== + +Here the events sent by the module is described. + +===== Temperature Event ===== + +^ Event ^ Description ^ +| [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.measurement#type_6_0x06_temperature|CLASS1.MEASUREMENT (10) Type=6, Temperature]] | If enabled this event is sent periodically for each sensor. The temperature is reported as a normalized integer value by this event. The event frequency is set in register 20-25 (default is one event per 30 seconds) and must be set to a non zero value for it to be sent.\\ \\ Temperature can be reported in one of three units. Kelvin, Celsius (default) or Fahrenheit as set in register 2-7. \\ \\ __**Data**__\\ **Byte 0** - Data coding byte. See description below.\\ **Byte 1** - Always 130 (0x82). Decimal point should be shifted two steps to the left = divide with hundred.\\ **Byte 2** - MSB of normalized integer. Two complement number.\\ **Byte 3** - LSB of normalized integer. Two complement number.\\ \\ | + +The data coding byte is the measurement data coding format described in [[http://www.vscp.org/docs/vscpspec/doku.php?id=data_coding|the VSCP specification]]. + +The normalized integer is stored as a two complement 16-bit integer. To convert + +1. Calculate the 16-bit twos complement as MSB byte * 256 + LSB byte. + +2. If the most significant bit is not set (Equal or less then 32767) this is a positive temperature. Divide by 100 and you have the temperature. + +3. If the most significant bit is set (Greater than 32767) this is a negative temperature. Now invert the result (the bits are inverted; 0 becomes 1, and 1 becomes 0) and add one to the result. Dive by 100 and you have the temperature. + +==== Example: A negative temperature in Celsius from sensor 1 ==== + +The data part of the event will be + +^ Byte ^ Description ^ +| Byte 0 | 130 (0x82) | +| Byte 1 | 2 (0x02) | +| Byte 2 | 255 (0xF0) | +| Byte 3 | 216 (0x60) | + + - **Byte 0**: Normalized integer, Celsius, Sensor 1 + - **Byte 1**: Decimal point should be shifted two steps to the left. + - **Byte 2/3**: Bit 16 is a one meaning it's a negative number. Temperature is a two complement number. 0xF060 = 0b1111000001100000. Invert which give 0b0000111110011111 add one which give 0b0000111110100000 = 4000. Divide by 100 gives 40.00 The read temperature is -40.00 ºC. + +==== Example: A positive temperature in Celsius from sensor 1 ==== + +The data part of the event will be + +^ Byte ^ Description ^ +| Byte 0 | 130 (0x82) | +| Byte 1 | 2 (0x02) | +| Byte 2 | 46 (0x2E) | +| Byte 3 | 224 (0xE0) | + + - **Byte 0**: Normalized integer, Celsius, Sensor 1 + - **Byte 1**: Decimal point should be shifted two steps to the left. + - **Byte 2/3**: Bit 16 is zero meaning it's a positive number. 0x2EE0 = 12000. Divide by 100 gives 120.00. The temperature is 120.00 ºC. + +==== Example: A negative temperature in Fahrenheit from sensor 5 ==== + +The data part of the event will be + +^ Byte ^ Description ^ +| Byte 0 | 249 (0xF9) | +| Byte 1 | 2 (0x02) | +| Byte 2 | 255 (0xFF) | +| Byte 3 | 118 (0x76) | + + - **Byte 0**: Normalized integer, Fahrenheit, Sensor 5 + - **Byte 1**: Decimal point should be shifted two steps to the left. + - **Byte 2/3**: Bit 16 is a one meaning it's a negative number. Temperature is a two complement number. 0xFF76 = 0b1111111101110110. Invert which give 0b0000000010001001 add one which give 0b0000000010001010 = 138. Divide by 100 gives 1.38 The read temperature is -1.38 ºF. + + + +==== Data coding byte for Kelvin ==== + +^ Bits ^ Description ^ +| 5,6,7 | Always set to 4 (0b100) - Normalized integer format. | +| 3,4 | __**Unit**:__\\ **0 (0b00)** - Kelvin.\\ **1 (0b01)** – Celsius.\\ **2 (0b10)** – Fahrenheit. | +| 0,1,2 | __**Sensor Index**:__\\ **0 (0b000)** - Sensor 0.\\ **1 (0b001)** - Sensor 1.\\ **2 (0b010)** - Sensor 2.\\ **3 (0b011)** - Sensor 3.\\ **4 (0b100)** - Sensor 4.\\ **5 (0b101)** - Sensor 5. | + +To help to interpret data the three tables below list the datacoding bytes for Kelvin, Celsius and Fahrenheit temperature presentation. + +=== Kelvin data coding table === + +^ Sensor ^ Value for data coding byte ^ +| Sensor 0 | 129 (0x81) | +| Sensor 1 | 130(0x82) | +| Sensor 2 | 131(0x83) | +| Sensor 3 | 132(0x84) | +| Sensor 4 | 133(0x85) | +| Sensor 5 | 134(0x86) | + + +=== Celsius data coding table === + +^ Sensor ^ Value for data coding byte ^ +| Sensor 0 | 136(0x88) | +| Sensor 1 | 137(0x89) | +| Sensor 2 | 138(0x8A) | +| Sensor 3 | 139(0x8B) | +| Sensor 4 | 140(0x8C) | +| Sensor 5 | 141(0x8D) | + + +=== Fahrenheit Vdata coding table === +^ Sensor ^ Value for data coding byte ^ +| Sensor 0 | 244 (0xF4) | +| Sensor 1 | 245 (0xF5) | +| Sensor 2 | 246 (0xF6) | +| Sensor 3 | 247 (0xF7) | +| Sensor 4 | 248 (0xF8) | +| Sensor 5 | 249 (0xF9) | + + +===== Alarm Event ===== + +If enabled the event is sent when a temperature sensor goes below a low alarm set point (see [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers|Low-alarm-registers]]) or above a high alarm set point (see [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers|High-alarm-registers]]). The hysteresis registers is used so that after an alarm event has been sent a new alarm event is not sent until the temperature goes below/above the value set in the set point plus(low)/minus(high) signed content of hysteresis register. + +A read of the alarm register will reset the alarm status and alarm events will not be sent out again until the the temperature changed with the hysteresis amount. + +^ Event ^ Description ^ +| [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.alarm#type_2_0x02_alarm_occurred|CLASS1.ALARM, Type=2, Alarm occurred]] | __**Data**__\\ **Byte 0** - Index. Index is 0 for Sensor 0. 1 for Sensor 1, 2 for Sensor 2. 3 for Sensor 3. 4 for Sensor 4. 5 for Sensor 5. \\ **Byte 1** - Zone.\\ **Byte 2** - Sub zone. | + +Zone and sub-zone are the modules settings for the sensor generating the alarm. See [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers|register 74-85]] + +===== TurnOn/TurnOff Event ===== + +If enabled, the event [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_5_0x05_turnon|CLASS1.CONTROL, Type=5, TurnOn]] or [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_6_0x06_turnoff|CLASS1.CONTROL, Type=6, TurnOff]] (Bit 5 in control register must be set (see [[registers#sensor_control_ registers|Control-registers]]])) is sent when the temperature goes below or above the low(see [[registers#low_ alarm_registers|Low-alarm-registers]]/high(see [[registers#high_ alarm_registers|High-alarm-registers]] alarm set points. Settings in the control register bit 6 (see [sub:Control-registers]) decides which of the **TurnOn/TurnOff** event that is sent. The hysteresis setting (see [sub:Sensor-hysteresis-registers]) tells how much a temperature must raise or fall below the alarm set point before a new event will be sent. + +^ Event ^ Description ^ +| [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_5_0x05_turnon|CLASS1.CONTROL, Type=5, TurnOn]] | __**Data**:__\\ **0** Index,\\ **1** Zone.\\ **2** Sub zone. | + +^ Event ^ Description ^ +| [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_6_0x06_turnoff|CLASS1.CONTROL, Type=6, TurnOff]] | __**Data**:__\\ **0** Index,\\ **1** Zone.\\ **2** Sub zone. | + +__**Index**__ is 0 for Sensor 0, 1 for Sensor 1, 2 for Sensor 2. 3 for Sensor 3. 4 for Sensor 4. 5 for Sensor 5. + +__**Zone**__ information is fetched from sensor zone register (see [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#sensor_zone_information_registers|sensor zone information registers]]). + +__**Sub zone**__ information is fetched from sensor sub-zone register (see [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=registers#sensor_zone_information_registers|sensor zone information registers]]). + +===== Sync. Event (incoming) ===== + +If a SYNC event is received by the module it will check the zone/subzone parameters of the event and send out [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=events#temperature_event|temperature measurement event(s)]] for all sensors that match. This can be a handy feature to use of one want synchronized data from several sources. + + +^ Event ^ Description ^ +| [[http://www.vscp.org/docs/vscpspec/doku.php?id=class1.control#type_26_0x1a_sync|CLASS1.CONTROL, Type=26, Sync]] | __**Data**:__\\ **0** Index,\\ **1** Zone.\\ **2** Sub zone. | + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/faq.txt b/manual/faq.txt new file mode 100644 index 0000000..cee8563 --- /dev/null +++ b/manual/faq.txt @@ -0,0 +1,15 @@ +====== faq - Frequently Asked Questions ====== + +//Not many of those yet!// + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/getting_started.txt b/manual/getting_started.txt new file mode 100644 index 0000000..0be379a --- /dev/null +++ b/manual/getting_started.txt @@ -0,0 +1,71 @@ +====== Getting started ====== + +You need + + * RJ-45 patch cables or similar. + * A stable +9V - +28V DC power source. + * A host computer with a serial or USB interface. + +The Kelvin NTC10K module is powered from the CAN4VSCP bus. [[http://www.grodansparadis.com/wiki/doku.php?id=connecting_can4vscp_devices_together|This article]] have information on how the bus is powered and set up. Follow it for a reliable setup. Don't forget the two 120 ohm terminators at each end of the bus. __They are important!__ You can activate the on board terminator on the module if it is located at one end of your bus (see the [[hardware|hardware section]]). + +When you power the module by inserting the RJ-45 cable the red LED on the board should light up to indicate it is powered. This is just a power indicator LED. When you power the board for the first time the green led starts to blink to indicate that the module search for a nickname. During normal operation this LED should light steady. + +Remember that there need to be __at least two__ CAN4VSCP (or other CAN device set to 125kbps) devices (one additional if you have the [[http://www.grodansparadis.com/frankfurt/rs232/frankfurt-rs232.html|Frankfurt RS-232]]) on the bus to be able to communicate. A single device can't talk by itself on a bus. It's an error. + +{{:odessa_inter_module_connector.png?500|}} + +As an alternative to power the Kelvin NTC module from the CAN4VSCP bus you can power it over the daisy chain connector. The [[http://www.grodansparadis.com/powerinjector/can4vscp_big/powerinjector.html|CAN4VSCP Power Injector]] is needed (or similar) for this. + +===== Installing the module ====== + +Connect the module to the CAN4VSCP bus. The red led led on the module should light up indicating that the device is powered. If this is the first time you start up the module the green lamp next to the initializing button will start to blink. This means that the module is trying to negotiate a nickname address with the rest of the modules on the bus. When it found a free nickname the green led will light steady. If the green led does not start to blink press the initialization button until it does. Now your module is ready to use. + +If the green led never stops blinking you have a problem with your bus as the typically mean that the module dos not find any other module on the bus. Remember there must always be at least two active modules. Also check cables and that you have 120 ohm terminators installed on both ends of the bus. + +When your module is installed it's time to configure it. + +===== Connecting temperature sensor(s) ====== + +{{:termistor.jpg?400|}} + +To just test that communication works you don't need to install any external temperature sensors. You can work with the internal sensor. By default it will send the board temperature in degrees Celsius every 30 seconds. You can view VSCP traffic on the CAN4VSCP bus with all CAN tools set to 125kbit/s but [[http://www.vscp.org/docs/vscpworks/doku.php?id=start|VSCP Works]] makes handling, configuring, diagnosing VSCP stuff a lot more easy. So this may be the time to get to know this piece of software that works on both Linux and Window. + +The internal temperature sensor is heated by the processor and other things on the PCB so it will always give a bit of a high value. You can calibrate away this error if you want. See the [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=configure|configuration section]]. + +Eventually you probably want to connect external temperature sensors to the module. You can connect any 10 Kohm NTC temperature sensor to the Kelvin NTC10K module. It helps if you know the B value of it for the temperature range you want to work in. You can get sensors and sensors on cables of different length from the [[http://www.frogshop.se|FrogShop]]. + +Five external NTC sensor can be connected to the Kelvin NTC10KA module. It is recommended to use NTC thermistors with 10K @ 25 °C types for best result. There are sensors available for all kinds of temperature measurement needs. As noted above you need the B value from the sensors datasheet or to be able to use it with the Kelvin NTC10KA module. + +The main advantage for a NTC sensor is that it is low cost. You can get it from anywhere and you can get it in any type and dimension. NTC resistor is also not sensitive to cable length. Using a CAT-5e cable (4 pairs with AWG 24) we will experience something like 9.38 ohms/100m which will not effect a 10K NTC thermistor that much. + +Connect the thermistor to the Kelvin NTC10KA by connecting it to +5VDC and to one of the temperature inputs. A thermistor is not subject to polarity considerations so you can connect it in any way you want. You need to setup the B value for the sensor to get correct temperature measurements. The pinout for the terminal block is in the [[http://www.grodansparadis.com/kelvinntc10k/manual/doku.php?id=hardware#connectors|hardware section]]. + +===== To measure temperature ===== + +{{:tempdiff.jpg?700|}} + +If you want to measure a temperature, for a room for example you will soon realize that temperature measurements has more to it then just hook up a sensor and measure the temperature. Look at the picture above. + +Each of the sensors shows a different temperature even when the sensor are on the same desk. If you walk around in the room things will be even more complex. Three sensors of the same type but on different height will show different results. + +The readings from the sensors of the Kelvin NTC module is given with two decimals. Does that mean we have 0.01°C precision? Unfortunately no! The thermistor has error and the analog reading circuitry (ADC) has error. + +We can approximate the expected error by first taking into account the thermistor resistance error. The thermistor is correct to 1%, which means that at 25°C it can read 10,100 to 9900 ohms. At around 25°C a difference of 450 ohms represents 1°C so 1% error means about +-0.25°C (you may be able to calibrate this away by determining the resistance of the thermistor in a 0°C ice bath and removing any offset). You can also spring for a 0.1% thermistor which will reduce the possible resistance error down to +-0.03°C + +Then there is the error of the ADC, for every bit that it is wrong the resistance (around 25°C) can be off by about 50 ohms. This isn't too bad, and is a smaller error than the thermistor error itself +-(0.1°C) but there is no way to calibrate it 'away' - just a higher precision ADC (12-16 bits instead of 10) will give you more precise readings + +In general, we think thermistors are higher precision than thermocouples, or most low cost digital sensors, but you will not get better than +-0.1°C accuracy on with a 1% thermistor and we would suggest assuming no better than +-0.5°C. + +You will in addition to this notice that the on-oard sensor will show a temperature that is higher then what you should expect, The same is if you connect a sensor directly to the board. This is due to the fact that the electronics on the board generate heat. This heat flows very well through the copper of the board giving faulty readings. The solution is to take away a degree or two from the reading. + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/globally_unique_identifiers.txt b/manual/globally_unique_identifiers.txt new file mode 100644 index 0000000..a2f8ac7 --- /dev/null +++ b/manual/globally_unique_identifiers.txt @@ -0,0 +1 @@ +====== Globally Unique Identifiers ====== diff --git a/manual/hardware.txt b/manual/hardware.txt new file mode 100644 index 0000000..5ea6433 --- /dev/null +++ b/manual/hardware.txt @@ -0,0 +1,156 @@ +====== Hardware ====== + +===== Most current information ===== +You can find the most current information about the Beijing module at \\ [[http://www.grodansparadis.com/beijing/beijing.html]]. On the site you can also find links to the latest firmware, drivers and schematics etc for its use. + +===== The raw facts ===== + +^ Parameter ^ Value ^ +| Current hardware reversion | B | +| Current firmware version | See [[https://github.com/grodansparadis/can4vscp_paris/releases|firmware release page]] | +| Supply voltage | +9-+28 VDC | +| PCB Size | 42mm x 72mm | +| Mounting options | DIN or wall | +| Power requirements | 0.1W | +| Communication: CAN4VSCP (CAN) | 125 kbps | +| Number of sensors supported | 6 | + +===== Schematics ===== + +{{:schema_kevin_ntc_rev_b.png?700|}} + +Schematics: Rev B (click picture to enlarge) + +===== Components ===== + +==== Internal temperature sensor ==== + +The internal temperature sensor used on the Kelvin NTC10KA is the Murata [[https://www.google.se/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiu-ujjlrnJAhWDjiwKHY9aCQQQFggiMAA&url=http%3A%2F%2Fwww.murata.com%2F~%2Fmedia%2Fwebrenewal%2Fsupport%2Flibrary%2Fcatalog%2Fproducts%2Fthermistor%2Fntc%2Fr44e.ashx&usg=AFQjCNE0U3R9tCH8Mm3JbRtiqhAN5yqOaQ&sig2=3Ga5yx9Fc6e15Gvr6YVbPg|NCP21XV103J03RA]]. Data for this sensor is as follows + +^ Description ^ Value ^ +| Time constant | 10 s | +| B[25/100]- value | 3944K | +| Temperature range |-40...+125ºC | +| Resistance tolerance | 5% | +| Resistance @ 25ºC | 10 Kohm | +| Max effect | 210 @ 25ºC mW | +| B[25/50]- value | 3900 | +| B[25/85]- value | 3934 | +| B[25/100]- value | 3944K 3% | +| Max error (B[25/100]) | 2.8 (%/C) | + + + + + +{{::kelvin_parts_a.png?700|}} + +{{::kelvin_parts_b.png?700|}} + + + +===== Connectors ===== + +{{::kelvin_connectors.png?700|}} + + +==== Terminal block ==== + +{{:kelvin_12_pin.png?500|}} + +^ Pin ^ Description ^ +| 1 | Ground (GND) | +| 2 | I/O 9 | +| 3 | I/O 8 | +| 4 | I/O 7 | +| 5 | I/O 6 | +| 6 | I/O 5 | +| 7 | I/O 4 | +| 8 | I/O 3 | +| 9 | I/O 2 | +| 10 | I/O 1 | +| 11 | I/O 0 | +| 12 | +5V (VCC) | + + + +==== RJ-XX pin-out ==== + +The unit is powered over the CAN4VSCP bus. The CAN4VSCP normally uses CAT5 or better twisted pair cable. You can use other cables if you which. The important thing is that the CANH and CANL signals uses a twisted cable. For connectors you can use RJ10, RJ11, RJ12 or the most common RJ45 connectors. + +Recommended connector is RJ-34/RJ-12 or RJ-11 with pin out as in this table. + +^ Pin ^ Use ^ RJ-11 ^ RJ-12 ^ RJ-45 ^ Patch Cable wire color T568B ^ +| 1 | +9-28V DC | | | RJ-45 | Orange/White | +| 2 1 | +9-28V DC | | RJ-12 | RJ-45 | Orange | +| 3 2 1 | +9-28V DC | RJ-11 | RJ-12 | RJ-45 | Green/White | +| 4 3 2 | CANH | RJ-11 | RJ-12 | RJ-45 | Blue | +| 5 4 3 | CANL | RJ-11 | RJ-12 | RJ-45 | Blue/White | +| 6 5 4 | GND | RJ-11 | RJ-12 | RJ-45 | Green | +| 7 6 | GND | | RJ-12 | RJ-45 | Brown/White | +| 8 | GND | | | RJ-45 | Brown | + +{{ :rj45.jpg?300 |RJ-11/12/45 pin-out}} +**RJ-11/12/45 pin-out** + +:!: Always use a pair of twisted wires for CANH/CANL for best noise immunity. If the EIA/TIA 56B standard is used this condition will be satisfied. This is good as most Ethernet networks already is wired this way. + + + +==== Inter module connector ==== + +The inter module connector can be used to connect modules that are physically close to each other together in an easy way. Remember that the minimum length of a connection cable is 30 cm. + +^ Pin ^Description ^ +| 1 | Power from CAN4VSCP bus | +| 2 | CANH | +| 3 | CANL | +| 4 | GND | + +\\ + +{{ :odessa_inter_module_connector.png?600 |}} + + +==== PIC programming Connector ==== + +^ pin ^ Description ^ +| 1 | Reset | +| 2 | VCC | +| 3 | GND | +| 4 | PGD (RX of second serial port is here to) | +| 5 | PGC (TX of second serial port is here to) | +| 6 | LWPGM | + +\\ + +{{::odessa_programming_connector.png?700|}} + + +==== Functionality of the status LED ==== + +The LED is used to indicate the status of the module. It will light steady when the firmware is running and will blink when the module is in the nickname discovery process. + +^ LED ^ Description ^ +| Steady | No error. Firmware running. | +| Blinking | Module is going through the [[http://www.vscp.org/docs/vscpspec/doku.php?id=vscp_level_i_specifics#address_or_nickname_assignment_for_level_i_nodes|nickname discovery process]]. | + + + +==== CAN ==== + +CAN4VSCP is a CAN based bus running at 125 kbps with the addition of DC power. If you are interested in how CAN works you have a pretty good intro [[http://www.eeherald.com/section/design-guide/esmod9.html|here]]. + +CAN is known to be robust and is there for used in vehicles and in the industry. + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/0_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_automation_company.png b/manual/images/0_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_automation_company.png similarity index 100% rename from manual/0_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_automation_company.png rename to manual/images/0_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_automation_company.png diff --git a/manual/images/0_home_akhe_vscp_spec_images_rj45.jpg b/manual/images/0_home_akhe_vscp_spec_images_rj45.jpg new file mode 100644 index 0000000..b5f43f9 Binary files /dev/null and b/manual/images/0_home_akhe_vscp_spec_images_rj45.jpg differ diff --git a/manual/10_home_akhe_vscp_hardware_can4vscp_kelvin_kelv____modules_Kelvin_NTC_manual_images_termistor.jpg b/manual/images/10_home_akhe_vscp_hardware_can4vscp_kelvin_kelv____modules_Kelvin_NTC_manual_images_termistor.jpg similarity index 100% rename from manual/10_home_akhe_vscp_hardware_can4vscp_kelvin_kelv____modules_Kelvin_NTC_manual_images_termistor.jpg rename to manual/images/10_home_akhe_vscp_hardware_can4vscp_kelvin_kelv____modules_Kelvin_NTC_manual_images_termistor.jpg diff --git a/manual/11_home_akhe_vscp_hardware_can4vscp_kelvin_kelv___e_modules_Kelvin_NTC_manual_images_tempdiff.jpg b/manual/images/11_home_akhe_vscp_hardware_can4vscp_kelvin_kelv___e_modules_Kelvin_NTC_manual_images_tempdiff.jpg similarity index 100% rename from manual/11_home_akhe_vscp_hardware_can4vscp_kelvin_kelv___e_modules_Kelvin_NTC_manual_images_tempdiff.jpg rename to manual/images/11_home_akhe_vscp_hardware_can4vscp_kelvin_kelv___e_modules_Kelvin_NTC_manual_images_tempdiff.jpg diff --git a/manual/images/18b20.jpg b/manual/images/18b20.jpg new file mode 100644 index 0000000..78fb642 Binary files /dev/null and b/manual/images/18b20.jpg differ diff --git a/manual/1_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_pbfree.png b/manual/images/1_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_pbfree.png similarity index 100% rename from manual/1_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_pbfree.png rename to manual/images/1_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_pbfree.png diff --git a/manual/images/1_home_akhe_vscp_spec_images_nickname_seq.jpg b/manual/images/1_home_akhe_vscp_spec_images_nickname_seq.jpg new file mode 100644 index 0000000..19fd4ab Binary files /dev/null and b/manual/images/1_home_akhe_vscp_spec_images_nickname_seq.jpg differ diff --git a/manual/2_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_kelvinntc10ka1.jpg b/manual/images/2_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_kelvinntc10ka1.jpg similarity index 100% rename from manual/2_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_kelvinntc10ka1.jpg rename to manual/images/2_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_kelvinntc10ka1.jpg diff --git a/manual/3_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___in_NTC_manual_images_schema_kevin_ntc_rev_b.png b/manual/images/3_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___in_NTC_manual_images_schema_kevin_ntc_rev_b.png similarity index 100% rename from manual/3_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___in_NTC_manual_images_schema_kevin_ntc_rev_b.png rename to manual/images/3_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___in_NTC_manual_images_schema_kevin_ntc_rev_b.png diff --git a/manual/4_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___ture_modules_Kelvin_NTC_manual_images_board.png b/manual/images/4_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___ture_modules_Kelvin_NTC_manual_images_board.png similarity index 100% rename from manual/4_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___ture_modules_Kelvin_NTC_manual_images_board.png rename to manual/images/4_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___ture_modules_Kelvin_NTC_manual_images_board.png diff --git a/manual/5_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_rj45.jpg b/manual/images/5_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_rj45.jpg similarity index 100% rename from manual/5_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_rj45.jpg rename to manual/images/5_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_rj45.jpg diff --git a/manual/6_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_drops.jpg b/manual/images/6_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_drops.jpg similarity index 100% rename from manual/6_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_drops.jpg rename to manual/images/6_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_drops.jpg diff --git a/manual/7_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_CAN_Termination.png b/manual/images/7_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_CAN_Termination.png similarity index 100% rename from manual/7_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_CAN_Termination.png rename to manual/images/7_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_CAN_Termination.png diff --git a/manual/8_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_Daisyconnector.png b/manual/images/8_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_Daisyconnector.png similarity index 100% rename from manual/8_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_Daisyconnector.png rename to manual/images/8_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_Daisyconnector.png diff --git a/manual/9_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___s_Kelvin_NTC_manual_images_terminationblock.png b/manual/images/9_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___s_Kelvin_NTC_manual_images_terminationblock.png similarity index 100% rename from manual/9_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___s_Kelvin_NTC_manual_images_terminationblock.png rename to manual/images/9_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___s_Kelvin_NTC_manual_images_terminationblock.png diff --git a/manual/images/CC-BY_icon.svg.png b/manual/images/CC-BY_icon.svg.png new file mode 100644 index 0000000..5f8c0e0 Binary files /dev/null and b/manual/images/CC-BY_icon.svg.png differ diff --git a/manual/images/Cc-by_new.svg.png b/manual/images/Cc-by_new.svg.png new file mode 100644 index 0000000..900481e Binary files /dev/null and b/manual/images/Cc-by_new.svg.png differ diff --git a/manual/images/boot1.png b/manual/images/boot1.png new file mode 100644 index 0000000..a7e6a96 Binary files /dev/null and b/manual/images/boot1.png differ diff --git a/manual/images/boot2.png b/manual/images/boot2.png new file mode 100644 index 0000000..c08758c Binary files /dev/null and b/manual/images/boot2.png differ diff --git a/manual/images/boot3.png b/manual/images/boot3.png new file mode 100644 index 0000000..ced926d Binary files /dev/null and b/manual/images/boot3.png differ diff --git a/manual/images/boot4.png b/manual/images/boot4.png new file mode 100644 index 0000000..695b843 Binary files /dev/null and b/manual/images/boot4.png differ diff --git a/manual/images/boot5.png b/manual/images/boot5.png new file mode 100644 index 0000000..2f0d3d7 Binary files /dev/null and b/manual/images/boot5.png differ diff --git a/manual/images/boot6.png b/manual/images/boot6.png new file mode 100644 index 0000000..c917854 Binary files /dev/null and b/manual/images/boot6.png differ diff --git a/manual/images/boot7.png b/manual/images/boot7.png new file mode 100644 index 0000000..65e4422 Binary files /dev/null and b/manual/images/boot7.png differ diff --git a/manual/images/boot8.png b/manual/images/boot8.png new file mode 100644 index 0000000..c851c73 Binary files /dev/null and b/manual/images/boot8.png differ diff --git a/manual/images/boot_log.jpg b/manual/images/boot_log.jpg new file mode 100644 index 0000000..911603d Binary files /dev/null and b/manual/images/boot_log.jpg differ diff --git a/manual/images/boot_log_end.jpg b/manual/images/boot_log_end.jpg new file mode 100644 index 0000000..b6a114f Binary files /dev/null and b/manual/images/boot_log_end.jpg differ diff --git a/manual/images/bus_drops.jpg b/manual/images/bus_drops.jpg new file mode 100644 index 0000000..26b7fd7 Binary files /dev/null and b/manual/images/bus_drops.jpg differ diff --git a/manual/images/calibration.jpg b/manual/images/calibration.jpg new file mode 100644 index 0000000..3862b29 Binary files /dev/null and b/manual/images/calibration.jpg differ diff --git a/manual/images/can_bus.png b/manual/images/can_bus.png new file mode 100644 index 0000000..1389eba Binary files /dev/null and b/manual/images/can_bus.png differ diff --git a/manual/images/check_device_there.jpg b/manual/images/check_device_there.jpg new file mode 100644 index 0000000..841a442 Binary files /dev/null and b/manual/images/check_device_there.jpg differ diff --git a/manual/images/copyright.png b/manual/images/copyright.png new file mode 100644 index 0000000..719d4dd Binary files /dev/null and b/manual/images/copyright.png differ diff --git a/manual/images/ds18b20-pinout.jpg b/manual/images/ds18b20-pinout.jpg new file mode 100644 index 0000000..1e7e0df Binary files /dev/null and b/manual/images/ds18b20-pinout.jpg differ diff --git a/manual/images/favicon.ico b/manual/images/favicon.ico new file mode 100644 index 0000000..c543014 Binary files /dev/null and b/manual/images/favicon.ico differ diff --git a/manual/images/grodan_logo.png b/manual/images/grodan_logo.png new file mode 100644 index 0000000..6e81e1f Binary files /dev/null and b/manual/images/grodan_logo.png differ diff --git a/manual/images/img20120507-144348.jpg b/manual/images/img20120507-144348.jpg new file mode 100644 index 0000000..84109e7 Binary files /dev/null and b/manual/images/img20120507-144348.jpg differ diff --git a/manual/images/kelvin1-500x500.jpg b/manual/images/kelvin1-500x500.jpg new file mode 100644 index 0000000..0282328 Binary files /dev/null and b/manual/images/kelvin1-500x500.jpg differ diff --git a/manual/images/kelvin1.jpg b/manual/images/kelvin1.jpg new file mode 100644 index 0000000..19190e3 Binary files /dev/null and b/manual/images/kelvin1.jpg differ diff --git a/manual/images/kelvin10-500x500.png b/manual/images/kelvin10-500x500.png new file mode 100644 index 0000000..5075464 Binary files /dev/null and b/manual/images/kelvin10-500x500.png differ diff --git a/manual/images/kelvin10.png b/manual/images/kelvin10.png new file mode 100644 index 0000000..fcd1b11 Binary files /dev/null and b/manual/images/kelvin10.png differ diff --git a/manual/images/kelvin11-500x500.png b/manual/images/kelvin11-500x500.png new file mode 100644 index 0000000..358fc65 Binary files /dev/null and b/manual/images/kelvin11-500x500.png differ diff --git a/manual/images/kelvin11.png b/manual/images/kelvin11.png new file mode 100644 index 0000000..83c9cda Binary files /dev/null and b/manual/images/kelvin11.png differ diff --git a/manual/images/kelvin12-500x500.png b/manual/images/kelvin12-500x500.png new file mode 100644 index 0000000..9c34204 Binary files /dev/null and b/manual/images/kelvin12-500x500.png differ diff --git a/manual/images/kelvin12.png b/manual/images/kelvin12.png new file mode 100644 index 0000000..e8b4ddb Binary files /dev/null and b/manual/images/kelvin12.png differ diff --git a/manual/images/kelvin13-500x500.png b/manual/images/kelvin13-500x500.png new file mode 100644 index 0000000..b3a149c Binary files /dev/null and b/manual/images/kelvin13-500x500.png differ diff --git a/manual/images/kelvin13.png b/manual/images/kelvin13.png new file mode 100644 index 0000000..1f1dff9 Binary files /dev/null and b/manual/images/kelvin13.png differ diff --git a/manual/images/kelvin14-500x500.png b/manual/images/kelvin14-500x500.png new file mode 100644 index 0000000..ba6c161 Binary files /dev/null and b/manual/images/kelvin14-500x500.png differ diff --git a/manual/images/kelvin14.png b/manual/images/kelvin14.png new file mode 100644 index 0000000..e60b7bd Binary files /dev/null and b/manual/images/kelvin14.png differ diff --git a/manual/images/kelvin2.jpg b/manual/images/kelvin2.jpg new file mode 100644 index 0000000..0c2cef8 Binary files /dev/null and b/manual/images/kelvin2.jpg differ diff --git a/manual/images/kelvin3.jpg b/manual/images/kelvin3.jpg new file mode 100644 index 0000000..99367c1 Binary files /dev/null and b/manual/images/kelvin3.jpg differ diff --git a/manual/images/kelvin4-500x500.jpg b/manual/images/kelvin4-500x500.jpg new file mode 100644 index 0000000..b8036a8 Binary files /dev/null and b/manual/images/kelvin4-500x500.jpg differ diff --git a/manual/images/kelvin4.jpg b/manual/images/kelvin4.jpg new file mode 100644 index 0000000..d11e0a8 Binary files /dev/null and b/manual/images/kelvin4.jpg differ diff --git a/manual/images/kelvin5.jpg b/manual/images/kelvin5.jpg new file mode 100644 index 0000000..b4356c9 Binary files /dev/null and b/manual/images/kelvin5.jpg differ diff --git a/manual/images/kelvin6.jpg b/manual/images/kelvin6.jpg new file mode 100644 index 0000000..d704bc0 Binary files /dev/null and b/manual/images/kelvin6.jpg differ diff --git a/manual/images/kelvin7.jpg b/manual/images/kelvin7.jpg new file mode 100644 index 0000000..3b93a60 Binary files /dev/null and b/manual/images/kelvin7.jpg differ diff --git a/manual/images/kelvin_12_pin.png b/manual/images/kelvin_12_pin.png new file mode 100644 index 0000000..77885b4 Binary files /dev/null and b/manual/images/kelvin_12_pin.png differ diff --git a/manual/images/kelvin_connectors.png b/manual/images/kelvin_connectors.png new file mode 100644 index 0000000..9ba1f47 Binary files /dev/null and b/manual/images/kelvin_connectors.png differ diff --git a/manual/images/kelvin_connectors.snag b/manual/images/kelvin_connectors.snag new file mode 100644 index 0000000..d8ceed1 Binary files /dev/null and b/manual/images/kelvin_connectors.snag differ diff --git a/manual/images/kelvin_parts_a.png b/manual/images/kelvin_parts_a.png new file mode 100644 index 0000000..21835d9 Binary files /dev/null and b/manual/images/kelvin_parts_a.png differ diff --git a/manual/images/kelvin_parts_a.snag b/manual/images/kelvin_parts_a.snag new file mode 100644 index 0000000..21b6f07 Binary files /dev/null and b/manual/images/kelvin_parts_a.snag differ diff --git a/manual/images/kelvin_parts_b.png b/manual/images/kelvin_parts_b.png new file mode 100644 index 0000000..f1d01d5 Binary files /dev/null and b/manual/images/kelvin_parts_b.png differ diff --git a/manual/images/kelvin_parts_b.snag b/manual/images/kelvin_parts_b.snag new file mode 100644 index 0000000..92b8d99 Binary files /dev/null and b/manual/images/kelvin_parts_b.snag differ diff --git a/manual/images/kelvinntc10ka1-500x500.jpg b/manual/images/kelvinntc10ka1-500x500.jpg new file mode 100644 index 0000000..8f3cbed Binary files /dev/null and b/manual/images/kelvinntc10ka1-500x500.jpg differ diff --git a/manual/images/limits.png b/manual/images/limits.png new file mode 100644 index 0000000..4b7661b Binary files /dev/null and b/manual/images/limits.png differ diff --git a/manual/images/logo.png b/manual/images/logo.png new file mode 100644 index 0000000..68ce0b4 Binary files /dev/null and b/manual/images/logo.png differ diff --git a/manual/images/logo_100.png b/manual/images/logo_100.png new file mode 100644 index 0000000..e429df7 Binary files /dev/null and b/manual/images/logo_100.png differ diff --git a/manual/images/logo_200.png b/manual/images/logo_200.png new file mode 100644 index 0000000..f280692 Binary files /dev/null and b/manual/images/logo_200.png differ diff --git a/manual/images/logo_400.png b/manual/images/logo_400.png new file mode 100644 index 0000000..a4b0316 Binary files /dev/null and b/manual/images/logo_400.png differ diff --git a/manual/images/logo_600.png b/manual/images/logo_600.png new file mode 100644 index 0000000..68ce0b4 Binary files /dev/null and b/manual/images/logo_600.png differ diff --git a/manual/images/low_alarm.png b/manual/images/low_alarm.png new file mode 100644 index 0000000..0f981da Binary files /dev/null and b/manual/images/low_alarm.png differ diff --git a/manual/images/m_2000px-rs232_buchse_9pol_male.svg.png b/manual/images/m_2000px-rs232_buchse_9pol_male.svg.png new file mode 100644 index 0000000..0957078 Binary files /dev/null and b/manual/images/m_2000px-rs232_buchse_9pol_male.svg.png differ diff --git a/manual/images/new_sampling_interval.png b/manual/images/new_sampling_interval.png new file mode 100644 index 0000000..bd60aed Binary files /dev/null and b/manual/images/new_sampling_interval.png differ diff --git a/manual/images/new_sampling_interval_post_update.png b/manual/images/new_sampling_interval_post_update.png new file mode 100644 index 0000000..57f9786 Binary files /dev/null and b/manual/images/new_sampling_interval_post_update.png differ diff --git a/manual/images/new_sampling_interval_pre_update.png b/manual/images/new_sampling_interval_pre_update.png new file mode 100644 index 0000000..ab2c035 Binary files /dev/null and b/manual/images/new_sampling_interval_pre_update.png differ diff --git a/manual/images/odessa_inter_module_connector.png b/manual/images/odessa_inter_module_connector.png new file mode 100644 index 0000000..7b34d79 Binary files /dev/null and b/manual/images/odessa_inter_module_connector.png differ diff --git a/manual/images/odessa_programming_connector.png b/manual/images/odessa_programming_connector.png new file mode 100644 index 0000000..ab15e32 Binary files /dev/null and b/manual/images/odessa_programming_connector.png differ diff --git a/manual/images/pcb-cut.png b/manual/images/pcb-cut.png new file mode 100644 index 0000000..29d1610 Binary files /dev/null and b/manual/images/pcb-cut.png differ diff --git a/manual/images/pict0033.jpg b/manual/images/pict0033.jpg new file mode 100644 index 0000000..c36de44 Binary files /dev/null and b/manual/images/pict0033.jpg differ diff --git a/manual/images/pict0034.jpg b/manual/images/pict0034.jpg new file mode 100644 index 0000000..132a526 Binary files /dev/null and b/manual/images/pict0034.jpg differ diff --git a/manual/images/pitemp02.jpg b/manual/images/pitemp02.jpg new file mode 100644 index 0000000..c5a4423 Binary files /dev/null and b/manual/images/pitemp02.jpg differ diff --git a/manual/images/power_injector8_800.png b/manual/images/power_injector8_800.png new file mode 100644 index 0000000..9999d7e Binary files /dev/null and b/manual/images/power_injector8_800.png differ diff --git a/manual/images/prototype.xcf b/manual/images/prototype.xcf new file mode 100644 index 0000000..2ea66c9 Binary files /dev/null and b/manual/images/prototype.xcf differ diff --git a/manual/images/rj45.jpg b/manual/images/rj45.jpg new file mode 100644 index 0000000..58d221c Binary files /dev/null and b/manual/images/rj45.jpg differ diff --git a/manual/images/rohs.png b/manual/images/rohs.png new file mode 100644 index 0000000..d8a652d Binary files /dev/null and b/manual/images/rohs.png differ diff --git a/manual/images/schema_kevin_ntc_rev_b.png b/manual/images/schema_kelvin_ntc_rev_b.png similarity index 100% rename from manual/images/schema_kevin_ntc_rev_b.png rename to manual/images/schema_kelvin_ntc_rev_b.png diff --git a/manual/images/tempsensor_in_ice.jpg b/manual/images/tempsensor_in_ice.jpg new file mode 100644 index 0000000..3941b21 Binary files /dev/null and b/manual/images/tempsensor_in_ice.jpg differ diff --git a/manual/images/termination.jpg b/manual/images/termination.jpg new file mode 100644 index 0000000..f9958a8 Binary files /dev/null and b/manual/images/termination.jpg differ diff --git a/manual/images/testing1.jpg b/manual/images/testing1.jpg new file mode 100644 index 0000000..d2a6e9d Binary files /dev/null and b/manual/images/testing1.jpg differ diff --git a/manual/images/testing2.jpg b/manual/images/testing2.jpg new file mode 100644 index 0000000..cc61780 Binary files /dev/null and b/manual/images/testing2.jpg differ diff --git a/manual/images/update_reg_read_write.png b/manual/images/update_reg_read_write.png new file mode 100644 index 0000000..532048b Binary files /dev/null and b/manual/images/update_reg_read_write.png differ diff --git a/manual/images/vscp_std_boot_loader_algorithm.png b/manual/images/vscp_std_boot_loader_algorithm.png new file mode 100644 index 0000000..41eef55 Binary files /dev/null and b/manual/images/vscp_std_boot_loader_algorithm.png differ diff --git a/manual/index.html b/manual/index.html new file mode 100644 index 0000000..3f94b85 --- /dev/null +++ b/manual/index.html @@ -0,0 +1,21 @@ + + + + + Document + + + + + + +
+ + + + diff --git a/manual/introduction.txt b/manual/introduction.txt new file mode 100644 index 0000000..3fbb9eb --- /dev/null +++ b/manual/introduction.txt @@ -0,0 +1,32 @@ + + +====== Introduction ====== + +{{ :kelvin13.png?600 | Kelvin NTC10K }} + +Kalvin NTC10K is a temperature module that can handle six temperature sensing elements of which one is internal. The module can be attached to a standard DIN Rail or be mounted directly on a wall (ordered as separate versions). + +The module fully adopts to the CAN4VSCP specification and can be powered directly over the bus with a 9-30V DC power source. It has a rich register set for configuration and any information events defined. It also have a decision matrix for easy dynamic event handling. + +VSCP CAN modules are designed to work on a CAN4VSCP bus which use ordinary RJ-45 connectors and is powered with a 9 - 28VDC power source where power is provided over the communication cable. This means there is no need for a separate power cable. All that is needed is a CAT5 or better twisted pair cable. Buss length can be a maximum of 500 meters with drops of maximum 24 meters length (up to a total of 120 meters). As for all CAN4VSCP modules the communication speed is fixed at 125 kbps. + +All VSCP modules contains information of there own setup, manual, hardware version, manufacturer etc. You just ask the module for the information you need and you will get it. When they are started up they have a default functionality that often is all that is needed to get a working setup. If the module have something to report it will send you an event and if it is setup to react on a certain type of event it will do it's work when you send event(s) to it. + +The module comes with a GUID (global unique id) and is programmed with a bootloader and VSCP module functionality that works right out of the box. + +You can control things with the module, such as intelligent relay control for heating and cooling that our [[http://www.grodansparadis.com/paris/paris.html|Paris module]] have, or set channel individual high and low alarm levels to safely monitor temperatures, possibly in remote locations. + + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ + + diff --git a/manual/level_i_events.txt b/manual/level_i_events.txt new file mode 100644 index 0000000..522ba3a --- /dev/null +++ b/manual/level_i_events.txt @@ -0,0 +1 @@ +====== Level I Events ====== diff --git a/manual/level_ii_events.txt b/manual/level_ii_events.txt new file mode 100644 index 0000000..443de96 --- /dev/null +++ b/manual/level_ii_events.txt @@ -0,0 +1 @@ +====== Level II Events ====== diff --git a/manual/level_ii_specifics.txt b/manual/level_ii_specifics.txt new file mode 100644 index 0000000..caf9afc --- /dev/null +++ b/manual/level_ii_specifics.txt @@ -0,0 +1 @@ +====== VSCP Level II Specifics ====== diff --git a/manual/lyx/0_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_automation_company.png b/manual/lyx/0_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_automation_company.png new file mode 100644 index 0000000..6e81e1f Binary files /dev/null and b/manual/lyx/0_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_automation_company.png differ diff --git a/manual/lyx/10_home_akhe_vscp_hardware_can4vscp_kelvin_kelv____modules_Kelvin_NTC_manual_images_termistor.jpg b/manual/lyx/10_home_akhe_vscp_hardware_can4vscp_kelvin_kelv____modules_Kelvin_NTC_manual_images_termistor.jpg new file mode 100644 index 0000000..a875a04 Binary files /dev/null and b/manual/lyx/10_home_akhe_vscp_hardware_can4vscp_kelvin_kelv____modules_Kelvin_NTC_manual_images_termistor.jpg differ diff --git a/manual/lyx/11_home_akhe_vscp_hardware_can4vscp_kelvin_kelv___e_modules_Kelvin_NTC_manual_images_tempdiff.jpg b/manual/lyx/11_home_akhe_vscp_hardware_can4vscp_kelvin_kelv___e_modules_Kelvin_NTC_manual_images_tempdiff.jpg new file mode 100644 index 0000000..948652a Binary files /dev/null and b/manual/lyx/11_home_akhe_vscp_hardware_can4vscp_kelvin_kelv___e_modules_Kelvin_NTC_manual_images_tempdiff.jpg differ diff --git a/manual/lyx/1_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_pbfree.png b/manual/lyx/1_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_pbfree.png new file mode 100644 index 0000000..d8a652d Binary files /dev/null and b/manual/lyx/1_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_pbfree.png differ diff --git a/manual/lyx/2_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_kelvinntc10ka1.jpg b/manual/lyx/2_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_kelvinntc10ka1.jpg new file mode 100644 index 0000000..7895913 Binary files /dev/null and b/manual/lyx/2_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_kelvinntc10ka1.jpg differ diff --git a/manual/lyx/3_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___in_NTC_manual_images_schema_kevin_ntc_rev_b.png b/manual/lyx/3_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___in_NTC_manual_images_schema_kevin_ntc_rev_b.png new file mode 100644 index 0000000..2dbeb12 Binary files /dev/null and b/manual/lyx/3_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___in_NTC_manual_images_schema_kevin_ntc_rev_b.png differ diff --git a/manual/lyx/4_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___ture_modules_Kelvin_NTC_manual_images_board.png b/manual/lyx/4_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___ture_modules_Kelvin_NTC_manual_images_board.png new file mode 100644 index 0000000..3010626 Binary files /dev/null and b/manual/lyx/4_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___ture_modules_Kelvin_NTC_manual_images_board.png differ diff --git a/manual/lyx/5_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_rj45.jpg b/manual/lyx/5_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_rj45.jpg new file mode 100644 index 0000000..58d221c Binary files /dev/null and b/manual/lyx/5_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_rj45.jpg differ diff --git a/manual/lyx/6_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_drops.jpg b/manual/lyx/6_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_drops.jpg new file mode 100644 index 0000000..26b7fd7 Binary files /dev/null and b/manual/lyx/6_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_drops.jpg differ diff --git a/manual/lyx/7_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_CAN_Termination.png b/manual/lyx/7_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_CAN_Termination.png new file mode 100644 index 0000000..1389eba Binary files /dev/null and b/manual/lyx/7_home_akhe_vscp_hardware_can4vscp_paris_relaydriver_manual_images_CAN_Termination.png differ diff --git a/manual/lyx/8_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_Daisyconnector.png b/manual/lyx/8_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_Daisyconnector.png new file mode 100644 index 0000000..ede0a3b Binary files /dev/null and b/manual/lyx/8_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___les_Kelvin_NTC_manual_images_Daisyconnector.png differ diff --git a/manual/lyx/9_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___s_Kelvin_NTC_manual_images_terminationblock.png b/manual/lyx/9_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___s_Kelvin_NTC_manual_images_terminationblock.png new file mode 100644 index 0000000..8e03a79 Binary files /dev/null and b/manual/lyx/9_home_akhe_vscp_hardware_can4vscp_kelvin_kelvi___s_Kelvin_NTC_manual_images_terminationblock.png differ diff --git a/manual/kelvin_ntc_manual.lyx b/manual/lyx/kelvin_ntc_manual.lyx similarity index 100% rename from manual/kelvin_ntc_manual.lyx rename to manual/lyx/kelvin_ntc_manual.lyx diff --git a/manual/kelvin_ntc_manual.lyx~ b/manual/lyx/kelvin_ntc_manual.lyx~ similarity index 100% rename from manual/kelvin_ntc_manual.lyx~ rename to manual/lyx/kelvin_ntc_manual.lyx~ diff --git a/manual/kelvin_ntc_manual.pdf b/manual/lyx/kelvin_ntc_manual.pdf similarity index 100% rename from manual/kelvin_ntc_manual.pdf rename to manual/lyx/kelvin_ntc_manual.pdf diff --git a/manual/kelvin_ntc_manual.xhtml b/manual/lyx/kelvin_ntc_manual.xhtml similarity index 100% rename from manual/kelvin_ntc_manual.xhtml rename to manual/lyx/kelvin_ntc_manual.xhtml diff --git a/manual/subscript.sty b/manual/lyx/subscript.sty similarity index 100% rename from manual/subscript.sty rename to manual/lyx/subscript.sty diff --git a/manual/module_description_file.txt b/manual/module_description_file.txt new file mode 100644 index 0000000..2eee9c4 --- /dev/null +++ b/manual/module_description_file.txt @@ -0,0 +1 @@ +====== Module Description File ====== diff --git a/manual/physical_level_lower_level_protocols.txt b/manual/physical_level_lower_level_protocols.txt new file mode 100644 index 0000000..48ebd0f --- /dev/null +++ b/manual/physical_level_lower_level_protocols.txt @@ -0,0 +1 @@ +====== Physical Level/Lower level protocols ====== diff --git a/manual/recipes.txt b/manual/recipes.txt new file mode 100644 index 0000000..c00c100 --- /dev/null +++ b/manual/recipes.txt @@ -0,0 +1,14 @@ +====== Recipes ====== + + * **The story about an old Fridge**: [[http://grodansparadis.com/wordpress/?p=1384]] + + +\\ +---- +{{ :grodan_logo.png?100 |}} +\\ +
+**Paradise of the Frog AB** Brattbergavägen 17 820 50 LOS SWEDEN\\ +**email:** [[info@grodansparadis.com]] **phone:** +46 (0)8 40011835 \\ +**web:**[[http://www.grodansparadis.com]] \\ +
\ No newline at end of file diff --git a/manual/register_abstraction_model.txt b/manual/register_abstraction_model.txt new file mode 100644 index 0000000..a653ad3 --- /dev/null +++ b/manual/register_abstraction_model.txt @@ -0,0 +1 @@ +====== Register Abstraction Model ====== diff --git a/manual/registers.txt b/manual/registers.txt new file mode 100644 index 0000000..3d7cc10 --- /dev/null +++ b/manual/registers.txt @@ -0,0 +1,258 @@ +====== Registers ====== + +All VSCP modules have a set of 8-bit registers defined to export it's functionality in a common way. Some of them (register 128-255) are predefined and the information in them are the same for all VSCP modules. See the [[http://www.vscp.org/docs/vscpspec/doku.php?id=register_abstraction_model|VSCP specification]] for a description of their content. + +The lower 128 register space is used for module specific registers. It is also here you find registers with which you configure your module. Also registers where you typically can read status information such as measurement data from the module is here. + +The lower register space is further expanded in register pages. + +Below is a description of the registers of the Kelvin NTC10KA module. + +===== Module zone registers ===== + +^ Register ^ Page ^ Description ^ +| 0 | 0 | The zone this module belongs to. | +| 1 | 0 | The sub zone this module belongs to. | + +===== Sensor Control Registers ===== + +Configure which data is reported here and how it is reported. + + +^ Register ^ Page ^ Description ^ +| 2 | 0 | Control byte for sensor 0. | +| 3 | 0 | Control byte for sensor 1. | +| 4 | 0 | Control byte for sensor 2. | +| 5 | 0 | Control byte for sensor 3. | +| 6 | 0 | Control byte for sensor 4. | +| 7 | 0 | Control byte for sensor 5. | + +==== Description of control register bits ==== + +^ Bit ^ Description ^ +| 0,1 | Temperature unit \\ \\ **00** - Kelvin. \\ **01** - Celsius (default). \\ **10** - Fahrenheit. \\ **11** - Reserved. | +| 2 | Reserved. | +| 3 | Enable low alarm if set to one. | +| 4 | Enable high alarm if set to one. | +| 5 | Send **TurnOn/TurnOff** events instead of Alarm if set to one. | +| 6 | Controls when **TurnOn/TurnOff** events will be sent if activated. \\ \\ 0 - **TurnOn** event is sent when low temperature is reached as set in low temperature alarm register (see [sub:Low-alarm-registers]). **TurnOff** event is sent when high temperature is reached as set in high temperature alarm register (see [sub:High-alarm-registers]).\\ \\ 1 - **TurnOff** event is sent when low temperature is reached as set in low temperature alarm register (see [[[registers|Registers]]]). **TurnOn** event is sent when high temperature is reached as set in high temperature alarm register (see [sub:High-alarm-registers]). \\ \\ The hysteresis value (see [sub:Sensor-hysteresis-registers]) will effect **TurnOn/TurnOff** events The temperature must go above or below the hysteresis value before a new event will be sent out. | +| 7 | If this bit is set Alarm events will be sent continuous with a one second interval until the alarm register is read or the temperature goes to a non alarm state (with hysteresis taken into account see [[sub:Low-temperature-alarm]). **TurnOn/TurnOff** events will not be affected by a cleared alarm register and will be sent until this bit is cleared or the temperature goes to a non alarm state (with hysteresis taken into account. | + + +===== Temperature registers ===== + +^ Register ^ Page ^ Description ^ +| 8 | 0 | Temperature sensor 0 MSB (on board sensor). | +| 9 | 0 | Temperature sensor 0 LSB (on board sensor). | +| 10 | 0 | Temperature sensor 1 MSB. | +| 11 | 0 | Temperature sensor 1 LSB. | +| 12 | 0 | Temperature sensor 2 MSB. | +| 13 | 0 | Temperature sensor 2 LSB. | +| 14 | 0 | Temperature sensor 3 MSB. | +| 15 | 0 | Temperature sensor 3 LSB. | +| 16 | 0 | Temperature sensor 4 MSB. | +| 17 | 0 | Temperature sensor 4 LSB. | +| 18 | 0 | Temperature sensor 5 MSB. | +| 19 | 0 | Temperature sensor 5 LSB. | + +All values stored as a twos complement number as temperature * 100. + +===== Report interval registers ===== + +^ Register ^ Page ^ Description ^ +| 20 | 0 | Report interval for sensor 0 in seconds (Set to zero for no report). | +| 21 | 0 | Report interval for sensor 1 in seconds (Set to zero for no report). | +| 22 | 0 | Report interval for sensor 2 in seconds (Set to zero for no report). | +| 23 | 0 | Report interval for sensor 3 in seconds (Set to zero for no report). | +| 24 | 0 | Report interval for sensor 4 in seconds (Set to zero for no report). | +| 25 | 0 | Report interval for sensor 5 in seconds (Set to zero for no report). | + + +===== β constant registers ===== + +^ Register ^ Page ^ Description ^ +| 38 | 0 | B constant for sensor 0 MSB. | +| 39 | 0 | B constant for sensor 0 LSB. | +| 40 | 1 | B constant for sensor 1 MSB. | +| 41 | 1 | B constant for sensor 1 LSB. | +| 42 | 2 | B constant for sensor 2 MSB. | +| 43 | 2 | B constant for sensor 2 LSB. | +| 44 | 3 | B constant for sensor 3 MSB. | +| 45 | 3 | B constant for sensor 3 LSB. | +| 46 | 4 | B constant for sensor 4 MSB. | +| 47 | 4 | B constant for sensor 4 LSB. | +| 48 | 5 | B constant for sensor 5 MSB. | +| 49 | 5 | B constant for sensor 5 LSB. | + +You find the B value for a specific NTC temperature sensor in it's datasheet. The correct B value set here is essential for the temperature calculations to be correct. + +You can us [[http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm|this webpage]] for a 10K thermistor with an unknown beta value. + + +===== Low alarm registers ===== + +^ Register ^ Page ^ Description ^ +| 50 | 0 | Low alarm set point for sensor 0 MSB. | +| 51 | 0 | Low alarm set point for sensor 0 LSB. | +| 52 | 0 | Low alarm set point for sensor 1 MSB. | +| 53 | 0 | Low alarm set point for sensor 1 LSB. | +| 54 | 0 | Low alarm set point for sensor 2 MSB. | +| 55 | 0 | Low alarm set point for sensor 2 LSB. | +| 56 | 0 | Low alarm set point for sensor 3 MSB. | +| 57 | 0 | Low alarm set point for sensor 3 LSB. | +| 58 | 0 | Low alarm set point for sensor 4 MSB. | +| 59 | 0 | Low alarm set point for sensor 4 LSB. | +| 60 | 0 | Low alarm set point for sensor 5 MSB. | +| 61 | 0 | Low alarm set point for sensor 5 LSB. | + +Writing any of these registers will reset high/low alarm conditions for that sensor. + +The value is stored as a twos complement number representing the temperature. **Note note that the value is not *100**. + +The hysteresis value affects the low alarm after a low alarm condition has been set. The temperature must increase with //hysteresis// degrees before the low alarm condition is resetted. + + +===== High alarm registers ===== + +^ Register ^ Page ^ Description ^ +| 62 | 0 | High alarm set point for sensor 0 MSB. | +| 63 | 0 | High alarm set point for sensor 0 LSB. | +| 64 | 0 | High alarm set point for sensor 1 MSB. | +| 65 | 0 | High alarm set point for sensor 1 LSB. | +| 66 | 0 | High alarm set point for sensor 2 MSB. | +| 67 | 0 | High alarm set point for sensor 2 LSB. | +| 68 | 0 | High alarm set point for sensor 3 MSB. | +| 69 | 0 | High alarm set point for sensor 3 LSB. | +| 70 | 0 | High alarm set point for sensor 4 MSB. | +| 71 | 0 | High alarm set point for sensor 4 LSB. | +| 72 | 0 | High alarm set point for sensor 5 MSB. | +| 73 | 0 | High alarm set point for sensor 5 LSB. | + +Writing any of these registers will reset high/low alarm conditions for that sensor. + +The value is stored as a twos complement number representing the temperature. **Note note that the value is not *100**. + +The hysteresis value affects the high alarm after a high alarm condition has been set. The temperature must decrease with //hysteresis// degrees before the high alarm condition is resetted. + +===== Sensor zone information registers ===== + +^ Register ^ Page ^ Description ^ +| 74 | 0 | Zone for sensor 0 alarms. | +| 75 | 0 | Sub zone for sensor 0 alarms. | +| 76 | 0 | Zone for sensor 1 alarms. | +| 77 | 0 | Sub zone for sensor 1 alarms. | +| 78 | 0 | Zone for sensor 2 alarms. | +| 79 | 0 | Sub zone for sensor 2 alarms. | +| 80 | 0 | Zone for sensor 3 alarms. | +| 81 | 0 | Sub zone for sensor 3 alarms. | +| 82 | 0 | Zone for sensor 4 alarms. | +| 83 | 0 | Sub zone for sensor 4 alarms. | +| 84 | 0 | Zone for sensor 5 alarms. | +| 85 | 0 | Sub zone for sensor 5 alarms. | + +===== Sensor absolute low temperature registers ===== + +^ Register ^ Page ^ Description ^ +| 86 | 0 | Absolute low for sensor 0 MSB (Write to reset). | +| 87 | 0 | Absolute low for sensor 0 LSB (Write to reset). | +| 88 | 0 | Absolute low for sensor 1 MSB (Write to reset). | +| 89 | 0 | Absolute low for sensor 1 LSB (Write to reset). | +| 90 | 0 | Absolute low for sensor 2 MSB (Write to reset). | +| 91 | 0 | Absolute low for sensor 2 LSB (Write to reset). | +| 92 | 0 | Absolute low for sensor 3 MSB (Write to reset). | +| 93 | 0 | Absolute low for sensor 3 LSB (Write to reset). | +| 94 | 0 | Absolute low for sensor 4 MSB (Write to reset). | +| 95 | 0 | Absolute low for sensor 4 LSB (Write to reset). | +| 96 | 0 | Absolute low for sensor 5 MSB (Write to reset). | +| 97 | 0 | Absolute low for sensor 5 LSB (Write to reset). | + +The value is stored as a twos complement number as temperature * 100. Writing any of the registers will rest the value. + +===== Sensor absolute high temperature registers ===== + +^ Register ^ Page ^ Description ^ +| 98 | 0 | Absolute high for sensor 0 MSB (Write to reset). | +| 99 | 0 | Absolute high for sensor 0 LSB (Write to reset). | +| 100 | 0 | Absolute high for sensor 1 MSB (Write to reset). | +| 101 | 0 | Absolute high for sensor 1 LSB (Write to reset). | +| 102 | 0 | Absolute high for sensor 2 MSB (Write to reset). | +| 103 | 0 | Absolute high for sensor 2 LSB (Write to reset). | +| 104 | 0 | Absolute high for sensor 3 MSB (Write to reset). | +| 105 | 0 | Absolute high for sensor 3 LSB (Write to reset). | +| 106 | 0 | Absolute high for sensor 4 MSB (Write to reset). | +| 107 | 0 | Absolute high for sensor 4 LSB (Write to reset). | +| 108 | 0 | Absolute high for sensor 5 MSB (Write to reset). | +| 109 | 0 | Absolute high for sensor 5 LSB (Write to reset). | + +The value is stored as a twos complement number as temperature * 100. Writing any of the registers will rest the value. + +===== Sensor hysteresis registers ===== + +^ Register ^ Page ^ Description ^ +| 110 | 0 | Hysteresis in degrees Celsius for sensor 0 (default is 5 degrees). | +| 111 | 0 | Hysteresis in degrees Celsius for sensor 1 (default is 5 degrees). | +| 112 | 0 | Hysteresis in degrees Celsius for sensor 2 (default is 5 degrees). | +| 113 | 0 | Hysteresis in degrees Celsius for sensor 3 (default is 5 degrees). | +| 114 | 0 | Hysteresis in degrees Celsius for sensor 4 (default is 5 degrees). | +| 115 | 0 | Hysteresis in degrees Celsius for sensor 5 (default is 5 degrees). | + +The value here will affect the high and low alarms +===== Voltage calibration registers ===== + +The Voltage used to calculate the temperature for a sensor have effect on the error. The voltage is theoretically 5V but will in reality be something else but still close to 5V. These register can be used to set a calibrated voltage obtained from actual measurements. The value stored in the two registers is the voltage times 10000 so 5V for example should be stored as 50000. + +^ Register ^ Page ^ Description ^ +| 118 | 0 | MSB of Voltage (Default is 0xC3). | +| 119 | 0 | MSB of Voltage (Default is 0x50). | + + +====== Page 1 ====== + + +===== Raw A/D values ===== + +Raw A/D values from the temperature sensor network can be read if a user wants to. This can be useful for special nonstandard setups. The A/D converter is a 10-bit converter so the value can be 0-1023 and is stored MSB first in the registers (not in the converter) as all values are stored in VSCP. The registers can only be read, a write is ignored. + +^ Register ^ Page ^ Description ^ +| 72 | 1 | MSB of A/D converter value for sensor 0. | +| 73 | 1 | LSB of A/D converter value for sensor 0. | +| 74 | 1 | MSB of A/D converter value for sensor 1. | +| 75 | 1 | LSB of A/D converter value for sensor 1. | +| 76 | 1 | MSB of A/D converter value for sensor 2. | +| 77 | 1 | LSB of A/D converter value for sensor 2. | +| 78 | 1 | MSB of A/D converter value for sensor 3. | +| 79 | 1 | LSB of A/D converter value for sensor 3. | +| 80 | 1 | MSB of A/D converter value for sensor 4. | +| 81 | 1 | LSB of A/D converter value for sensor 4. | +| 82 | 1 | MSB of A/D converter value for sensor 5. | +| 83 | 1 | LSB of A/D converter value for sensor 5. | + +===== Sensor calibration registers ===== + +The value in the calibration register is added to the measured sensor value before it's reported. The calibration value is stored as a two's complement temperature * 100 to allow for both positive and negative numbers. So 24.23 degrees is stored as 2423 and so on. This means that 100 will add one degree to the measured value while 65436 (0xFF9c) is -100 and will subtract one degree form the measured value. If you are unsecyre on how two complement umbers work there is an introduction here https://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html + +^ Register ^ Page ^ Description ^ +| 84 | 1 | MSB of calibration value for sensor 0. | +| 85 | 1 | LSB of calibration value for sensor 0. | +| 86 | 1 | MSB of calibration value for sensor 1. | +| 87 | 1 | LSB of calibration value for sensor 1. | +| 88 | 1 | MSB of calibration value for sensor 2. | +| 89 | 1 | LSB of calibration value for sensor 2. | +| 90 | 1 | MSB of calibration value for sensor 3. | +| 91 | 1 | LSB of calibration value for sensor 3. | +| 92 | 1 | MSB of calibration value for sensor 4. | +| 93 | 1 | LSB of calibration value for sensor 4. | +| 94 | 1 | MSB of calibration value for sensor 5. | +| 95 | 1 | LSB of calibration value for sensor 5. | + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ \ No newline at end of file diff --git a/manual/replacing_the_firmware.txt b/manual/replacing_the_firmware.txt new file mode 100644 index 0000000..f4c868e --- /dev/null +++ b/manual/replacing_the_firmware.txt @@ -0,0 +1,61 @@ +====== Updating the firmware ====== + +New firmware is released from time to time for all our modules. We expect this to be true also for the Odessa module as it is an active project. The process of updating the firmware of the module is a simple one. Just follow the steps outlined in the [[http://www.vscp.org/docs/vscpworks/doku.php?id=start|VSCP Works documentation]]. + + +===== Where is the source for the firmware? ===== + +You can find the latest source for the firmware [[https://github.com/grodansparadis/can4vscp_kelvin_ntc10k/releases|here]]. **You should use the relocated version of the firmware.** + + +===== Step by step update process ===== + +Enter the bootloader in the menu + +{{:boot1.png?500|}} + +Select the interface the device is on + +{{:boot2.png?500|}} + +{{:boot3.png?500|}} + +Select the nickname for the device to update firmware on. Make sure this is the correct id. If this is the first time you update a node and only the bootloader is present use **0xfe** + +{{:boot4.png?500|}} + +On a node with working firmware the bootloader will be discovered automatically. If not select the algorithm (Microchip pic 1) for the device, + + +{{:boot5.png?500|}} + + +Load the firmware file using "local file". **You should use the relocated version of the firmware.** + + +{{:boot6.png?500|}} + + +Program the device + + +{{:boot7.png?500|}} + +{{:boot8.png?500|}} + + +Due to a bug in VSCP Works restart VSCP works after the bootloader process is ready. + +Your device should now be available with the same id as you entered previously. + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ diff --git a/manual/start.txt b/manual/start.txt new file mode 100644 index 0000000..943c013 --- /dev/null +++ b/manual/start.txt @@ -0,0 +1,40 @@ +====== CAN4VSCP Kelvin NTC10K module ====== + +**Document reversion**: 2016-05-06 \\ +Copyright © 2000-2015 [[http://www.paradiseofthefrog.com|Paradise of the Frog AB]], <[[akhe@paradiseofthefrog.com|contact]]> + +{{ :kelvin14.png?600 | Kelvin NTC10K }} + +This documentation is for the [[http://www.grodansparadis.com/kelvinntc10k/kelvin_ntc10ka.html|Kelvin NTC10K module]]. The module is available for international purchase from the [[http://www.frogshop.se|FrogShop]]. + + * [[Introduction]] + * [[Getting Started]] + * [[Hardware]] + * [[CAN4VSCP cabling]] + * [[Configure]] + * [[Replacing the firmware|Updating the firmware]] + * [[registers|Registers]] + * [[Alarms]] + * [[decisionmatrix|Decision Matrix]] + * [[Recipes]] + * [[faq]] + +//**Disclaimer:** © 2011-2015 Grodans Paradis AB. All rights reserved. Grodans Paradis AB®, logo and combinations thereof, are registered trademarks of Grodans Paradis AB. Other terms and product names may be trademarks of others. The information in this document is provided in connection with Grodans Paradis AB products. No license, express or implied or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Grodans Paradis AB products. Neither the whole nor any part of the information contained in or the product described in this document may be adapted or reproduced in any material from except with the prior written permission of the copyright holder. The product described in this document is subject to continuous development and improvements. All particulars of the product and its use contained in this document are given by Grodans Paradis AB in good faith. However all warranties implied or expressed including but not limited to implied warranties of merchantability or fitness for purpose are excluded. This document is intended only to assist the reader in the use of the product. Grodans Paradis AB. shall not be liable for any loss or damage arising from the use of any information in this document or any error or omission in such information or any incorrect use of the product. // + + +{{:rohs.png?100|}} +All boards produced by Paradise of the Frog AB are ROHS compliant. + + +\\ +---- +{{ :grodan_logo.png?100 |}} + +
+Paradise of the Frog AB Brattbergavägen 17, 820 50 LOS, SWEDEN
+email: info@paradiseofthefrog.com phone: +46 (0)8 40011835
+web: http://www.paradiseofthefrog.com
+
+ + + diff --git a/manual/variables.xml b/manual/variables.xml new file mode 100644 index 0000000..7bddb2f --- /dev/null +++ b/manual/variables.xml @@ -0,0 +1,4 @@ + + 2020-05-04 18:00 + 1.11.3 + \ No newline at end of file diff --git a/manual/vscp_boot_loader_algorithm.txt b/manual/vscp_boot_loader_algorithm.txt new file mode 100644 index 0000000..1749cdd --- /dev/null +++ b/manual/vscp_boot_loader_algorithm.txt @@ -0,0 +1 @@ +====== VSCP boot loader algorithm ====== diff --git a/manual/vscp_level_i_specifics.txt b/manual/vscp_level_i_specifics.txt new file mode 100644 index 0000000..ac7722d --- /dev/null +++ b/manual/vscp_level_i_specifics.txt @@ -0,0 +1 @@ +====== VSCP Level I Specifics ====== diff --git a/manual/vscp_multicast.txt b/manual/vscp_multicast.txt new file mode 100644 index 0000000..63f0a28 --- /dev/null +++ b/manual/vscp_multicast.txt @@ -0,0 +1 @@ +====== VSCP Multicast ======