{"id":1824,"date":"2025-04-14T06:49:50","date_gmt":"2025-04-14T06:49:50","guid":{"rendered":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?post_type=spl_knowledgebase&#038;p=1824"},"modified":"2025-06-10T08:33:06","modified_gmt":"2025-06-10T08:33:06","slug":"example-spice10212-nonlinearity-correction","status":"publish","type":"spl_knowledgebase","link":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/","title":{"rendered":"Example: SPice10212 nonlinearity correction"},"content":{"rendered":"\n<p>This program demonstrates the polynomial method of linearizing the raw readings. Note that the actual coefficients used are specific to our test transformer. You must determine your own coefficients and use them in your program. Only one channel has been linearized. The program uses the\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms\/#o364\">MMi99<\/a>\/200 LCD for display.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">;Correct.spt SPice20212 demo\/calibration with nonlinearity correction <br>;using MMi200 with LCD<br>;The nonlinearity correction is applied only<br>;to the first channel, to allow comparisons to be made.<br><br>;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms\/#o414\">RAM<\/a> storage<br>Temp            EQU             20<br><br>;Use for MS12 only              ON              20      ;MS12 backlight<br><br>;Initialize the <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms\/#o366\">SPice<\/a> connector for 3 analog inputs<br>                SetU            0,3<br>                SetU            1,3<br>                SetU            2,3<br>                SPiceConfigU<br><br>;Main program loop:<br><br>Loop:<br>;This section displays the raw analog readings on the<br>;top line of the display. Full scale is always 255 counts<br><br>                AnInE                   ;Use AnInC on MS12<br>                OBLCD_SetCur    0,0<br>                OBLCD_UDecDispXFW<br><br>                AnInF                   ;Use AnInD on MS12<br>                OBLCD_SetCur    0,6<br>                OBLCD_UDecDispXFW<br><br>                AnInG                   ;Use AnInE on MS12<br>                OBLCD_SetCur    0,12<br>                OBLCD_UDecDispXFW<br><br>;This section displays the readings as voltages.<br><br>;For phase A the conversion is done using a correction algorithm<br>;based on a polynomial function. <br><br>;For the other two phases the conversion is a simple scaling.<br>;The scale factor initially loaded into Q will determine the<br>;full scale range, i.e. the voltage corresponding to 255<br>;raw counts.<br><br>                AnInE                   ;Use AnInC on MS12<br>                GoSub           Correct<br>                OBLCD_SetCur    1,0<br>                OBLCD_UDecDispXFW<br><br>;The scale factor for the other two readings<br>;is Vfs\/255, where Vfs is the required full scale voltage.<br><br>                fLoadQ          1.0     ;1.0  for FS=255V (240V+10%)<br>                                        ;0.5176 for FS=132V (120V+10%)<br><br>                AnInF                   ;Use AnInD on MS12<br>                OBLCD_SetCur    1,6<br>                Float<br>                fMul<br>                OBLCD_fDispW    3,0<br><br>                AnInG                   ;Use AnInE on MS12<br>                OBLCD_SetCur    1,12<br>                Float<br>                fMul<br>                OBLCD_fDispW    3,0<br><br><br><br>                GoTo            Loop<br><br><br>;Correct for nonlinearity<br><br>;Implements the function <br><br>;y = 2.859320E-06 x^3 -1.011672E-03 x^2 +1.058639E+00x +3.916506E+00<br><br>;These particular coefficients were determined with a specific transformer,<br>;with the system calibrated for 255V full scale. A different transformer<br>;and\/or full scale range will require different coefficients.<br><br>Correct:<br>                Float<br>                fStore          Temp<br>                fLoadQ          2.859320E-06            ; <a href=\"https:\/\/www.splatco.com\/skb\/352.htm#o3808\">X<\/a>^3 coefficient<br>                fMul<br>                fLoadQ          -1.011672E-03           ; X^2 coefficient<br>                fAdd<br>                fRecallQ        Temp<br>                fMul<br>                fLoadQ          +1.058639E+00           ; X^1 coefficient<br>                fAdd<br>                fRecallQ        Temp<br>                fMul<br>                fLoadQ          +3.916506E+00           ; constant offset<br>                fAdd<br>                fLoadQ          0.5                     ;Rounding<br>                fAdd<br>                Fix<br>                Return<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This program demonstrates the polynomial method of linearizing the raw readings. Note that the actual coefficients used are specific to our test transformer. You must&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1821,"menu_order":3,"template":"","class_list":["post-1824","spl_knowledgebase","type-spl_knowledgebase","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Example: SPice10212 nonlinearity correction - SPLat Controls<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Example: SPice10212 nonlinearity correction - SPLat Controls\" \/>\n<meta property=\"og:description\" content=\"This program demonstrates the polynomial method of linearizing the raw readings. Note that the actual coefficients used are specific to our test transformer. You must...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/\" \/>\n<meta property=\"og:site_name\" content=\"SPLat Controls\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-10T08:33:06+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/\",\"name\":\"Example: SPice10212 nonlinearity correction - SPLat Controls\",\"isPartOf\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\"},\"datePublished\":\"2025-04-14T06:49:50+00:00\",\"dateModified\":\"2025-06-10T08:33:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product documentation\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Product documentation: SPice add-on boards\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"SPice10212 &#8211; 3-phase VAC measurement\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"SPice10212: Programming\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"Example: SPice10212 nonlinearity correction\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"name\":\"SPLat Controls\",\"description\":\"OEM Embedded Machine Controllers\",\"publisher\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\",\"name\":\"SPLat Controls\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"caption\":\"SPLat Controls\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Example: SPice10212 nonlinearity correction - SPLat Controls","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Example: SPice10212 nonlinearity correction - SPLat Controls","og_description":"This program demonstrates the polynomial method of linearizing the raw readings. Note that the actual coefficients used are specific to our test transformer. You must...","og_url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/","og_site_name":"SPLat Controls","article_modified_time":"2025-06-10T08:33:06+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/","name":"Example: SPice10212 nonlinearity correction - SPLat Controls","isPartOf":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website"},"datePublished":"2025-04-14T06:49:50+00:00","dateModified":"2025-06-10T08:33:06+00:00","breadcrumb":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/example-spice10212-nonlinearity-correction\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/"},{"@type":"ListItem","position":2,"name":"Product documentation","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/"},{"@type":"ListItem","position":3,"name":"Product documentation: SPice add-on boards","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/"},{"@type":"ListItem","position":4,"name":"SPice10212 &#8211; 3-phase VAC measurement","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/"},{"@type":"ListItem","position":5,"name":"SPice10212: Programming","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/product-documentation\/product-documentation-spice-add-on-boards\/spice10212-3-phase-vac-measurement\/spice10212-programming\/"},{"@type":"ListItem","position":6,"name":"Example: SPice10212 nonlinearity correction"}]},{"@type":"WebSite","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","name":"SPLat Controls","description":"OEM Embedded Machine Controllers","publisher":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization","name":"SPLat Controls","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","caption":"SPLat Controls"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/1824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase"}],"about":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/types\/spl_knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/users\/1"}],"up":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/1821"}],"wp:attachment":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/media?parent=1824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}